在C#委托中线程休眠时间

时间:2012-06-04 07:06:09

标签: c# multithreading delegates

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

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()方法?如果我删除了这个,我的软件将如何受到这种变化的影响?在这类事件中,线程睡眠值将是什么?

1 个答案:

答案 0 :(得分:3)

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

如果您在图片更改中使用事件,则可能会影响其他线程是否根据图片数据执行某项工作。

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