我正在使用一些委托(delegate)在线程中显示或更改表单上的某些内容。事件方法如下。
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() 方法吗?如果我删除它,我的软件将如何受到此更改的影响?在这类事件中,线程 sleep 值是多少?
最佳答案
调用 PictureBoxImageSet 函数的代码将继续进一步执行,而不会延迟 thread.sleep 中使用的时间。
如果您正在使用图片更改事件,那么如果其他线程根据图片数据执行某些工作,则可能会产生影响。
如果要同步完成这项工作,则调用 PictrBox.Invoke 方法并删除 thread.sleep。它将保证在进一步执行代码之前设置图像。
关于c# - C# 委托(delegate)中的线程 sleep 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10877523/