c# - C# 委托(delegate)中的线程 sleep 时间

标签 c# multithreading delegates

我正在使用一些委托(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/

相关文章:

c# - DEL 和 BACKSPACE 键从 WebBrowser 中被吃掉

c# - 为什么 DatasourceRequest 没有传递到 Kendo Grid 中工具栏的自定义命令

c# - 如何从Windows 8.1 Store应用程序中的ViewModel C#类将按钮插入网格

java - 如何在 Java 中创建允许主应用程序完全退出的后台线程?这适用于 Linux,但不适用于 Windows

python - 线程子进程的奇怪输出

linux - IO 操作期间的用户空间线程延迟

c# - 将委托(delegate)从一个类(class)传递到另一个类(class)

c# - 创建一个函数并在一行 C# 代码中调用它

c++ - 同步此事件实现的最佳方式是什么

c# - 删除FTP服务器中的文件夹和子文件夹