我正在使用C#中的Windows应用程序,当我点击button1时,我运行了“MyFunction()”函数。我试着 在“MyFunction()”运行时更改pictureBox1中的图像,因为它需要几分钟才能完成,但是 到目前为止,我所拥有的代码只有在“MyFunction”执行完成后才会改变所需的图像。
我看到GUI在MyFunction()工作时冻结,但我正在更改图像(pictureBox1.Image = Resource1.Working;) 在调用“MyFunction();”之前。
如何在“MyFunction()”开始之前立即在pictureBox1中显示“正常工作”的图像?感谢
void Button1Click(object sender, EventArgs e)
{
pictureBox1.Image = Resource1.Working;//To show image "Working.jpg" while function is running
MyFunction();
pictureBox1.Image = Resource1.WorkCompleted;//To show image "WorkCompleted.jpg" when function finishes
//End of program
}
答案 0 :(得分:2)
Windows应用程序是单线程的,因此您的语句将在一个线程(主线程)上按顺序执行。考虑从.net 4.5中使用async / await,如下所示:
async void Button1Click(object sender, EventArgs e)
{
pictureBox1.Image = Resource1.Working;
await Task.Run(() => MyFunction());
pictureBox1.Image = Resource1.WorkCompleted;
}