单击按钮并在运行函数C#之前在pictureBox中显示不同的图像

时间:2015-01-04 06:57:54

标签: c# winforms picturebox

我正在使用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
    }

1 个答案:

答案 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;
}