1

我正在使用一些代表在线程中显示或更改表单上的某些内容。事件方法如下。

private void PictureBoxImageSet(PictureBox PictrBox, Image Img)
{
    try
    {
        PictrBox.BeginInvoke((ThreadStart)delegate()
        {
            PictrBox.Image = Img;
        });
        Thread.Sleep(FORM_ITEM_INVOKE_TASK_SLEEP_VALUE);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}

我总是必须使用 Thread.Sleep() 方法吗?如果我删除它,我的软件将如何受到此更改的影响?在这类事件中,线程睡眠值是多少?

4

1 回答 1

3

调用 PictureBoxImageSet 函数的代码将继续进一步执行,而不会延迟 thread.sleep 中使用的时间。

如果您正在使用图片更改事件,那么如果其他线程根据图片数据执行某些工作,则可能会产生影响。

如果要同步完成这项工作,则调用 PictrBox.Invoke 方法并删除 thread.sleep。它将保证在进一步执行代码之前设置图像。

于 2012-06-04T07:09:37.977 回答