C# 在按钮中排序事件。\u单击

C# 在按钮中排序事件。\u单击,c#,winforms,click,C#,Winforms,Click,我试图让事件在我的按钮点击中一次发生一个,但由于某些原因,一切似乎都在等待运行,直到一切都完成。例如,图像更改只有在其他所有事情发生后才会发生 private void button1_Click(object sender, EventArgs e) { pictureBox1.Image = Properties.Resources.running; iTunesAppClass itunes = new iTunesAppClass(

我试图让事件在我的按钮点击中一次发生一个,但由于某些原因,一切似乎都在等待运行,直到一切都完成。例如,图像更改只有在其他所有事情发生后才会发生

private void button1_Click(object sender, EventArgs e)
    {
            pictureBox1.Image = Properties.Resources.running;
            iTunesAppClass itunes = new iTunesAppClass();
            IITLibraryPlaylist mainLibrary = itunes.LibraryPlaylist;
            IITTrackCollection ittracks = mainLibrary.Tracks;


            List<string> files = new List<string>();
            List<string> musicfiles = new List<string>();
            List<string> badfiles = new List<string>();
            List<string> songlist = new List<string>();
            int state = ((int)itunes.PlayerState);

            string statestring = null;
            if (state < 1) { statestring = "Stopped"; };
            if (state == 1) { statestring = "Playing"; };

            if (state == 1)
            {
                do
                {
                    label5.Text = ("Pausing iTunes to maintain file integrity");
                    itunes.Pause();
                    state = (int)itunes.PlayerState;
                }
                while (state == 1);
            }
            if (state < 1) { statestring = "Stopped"; };
            if (state == 1) { statestring = "Playing"; };
            if (state != 1)
            {
                label5.Text = "Itunes is " + statestring;
            }

            string[] extensions = { "*.mp3", "*.mp4", "*.m4a", "*.m4v", "*.m4p", "*.m4b", "*.flac" };
            string filepath = label4.Text;
            foreach (string extension in extensions)
            {
                this.pictureBox1.Image = Properties.Resources.running;
                try
                {
                    files.AddRange(Directory.GetFiles(filepath, extension, SearchOption.AllDirectories));
                }
                catch (UnauthorizedAccessException) { }
            }

            foreach (string file in files)
            {
                try { string taglibfile = TagLib.File.Create(file).Tag.Title; musicfiles.Add(file); Console.WriteLine(taglibfile); }
                catch { badfiles.Add(file); }
            }
            XDocument baddoc = new XDocument
            (new XElement("Corrupt",
               badfiles.Select(badfile =>
               new XElement("File", badfile))));
            baddoc.Save(label4.Text + "\\badfiles.xml");
            // foreach(string musicfile in musicfiles)
            //{ String Title = (TagLib.File.Create(musicfile).Tag.Title); }
            this.pictureBox1.Image = Properties.Resources.skinitunes;
    }
private void按钮1\u单击(对象发送者,事件参数e)
{
pictureBox1.Image=Properties.Resources.running;
iTunesAppClass itunes=新iTunesAppClass();
iitlibraryplaylistmainlibrary=itunes.LibraryPlaylist;
IITTrackCollection ittracks=mainLibrary.Tracks;
列表文件=新列表();
列表音乐文件=新列表();
List badfiles=新列表();
List songlist=新列表();
int state=((int)itunes.PlayerState);
字符串statestring=null;
如果(状态<1){statestring=“Stopped”;};
如果(state==1){statestring=“Playing”};
如果(状态==1)
{
做
{
label5.Text=(“暂停iTunes以保持文件完整性”);
暂停();
state=(int)itunes.PlayerState;
}
而(状态==1);
}
如果(状态<1){statestring=“Stopped”;};
如果(state==1){statestring=“Playing”};
如果(状态!=1)
{
label5.Text=“Itunes是”+状态字符串;
}
字符串[]扩展名={“*.mp3”、“*.mp4”、“*.m4a”、“*.m4v”、“*.m4p”、“*.m4b”、“*.flac”};
字符串filepath=label4.Text;
foreach(扩展中的字符串扩展)
{
this.pictureBox1.Image=Properties.Resources.running;
尝试
{
files.AddRange(Directory.GetFiles(filepath、扩展名、SearchOption.AllDirectories));
}
捕获(UnauthorizedAccessException){}
}
foreach(文件中的字符串文件)
{
请尝试{string taglibfile=TagLib.File.Create(File).Tag.Title;musicfiles.Add(File);Console.WriteLine(taglibfile);}
catch{badfiles.Add(file);}
}
XDocument baddoc=新XDocument
(新的“腐败”,
badfiles.Select(badfile=>
新XElement(“文件”,badfile));
baddoc.Save(label4.Text+“\\badfiles.xml”);
//foreach(音乐文件中的字符串音乐文件)
//{String Title=(TagLib.File.Create(musicfile.Tag.Title);}
this.pictureBox1.Image=Properties.Resources.skinitunes;
}

更改图片后,请尝试使用Application.DoEvents()。好的,因此图像已更改,但在运行其余事件之前,旋转不会发生,它只是位于gif的第一帧。如果您在UI线程上执行繁重的任务,我建议您使用BackgroundWorker。您可以设置微调器,启动backgroundworker,并在其完成时进行侦听,以便删除微调器。阅读这个答案,它展示了一个背景工作人员的快速示例