线程回调内的Thread.Sleep挂起Windows

时间:2012-09-28 10:50:15

标签: c# .net multithreading timer

我正在启动一个使用某些文件运行例程任务的线程,不幸的是,在该线程回调中调用Thread.Sleep会在指定的时间内挂起Windows,即。我的光标冻结了,CTRL + ALT + DEL也没有做任何事情。如何在不挂断UI的情况下专门“睡眠”后台线程?

我正在使用这个创建线程:

 createThread = new Thread(new ThreadStart(this.createFileExec));
 createThread.Start();

我的回调是这样的:

    private void createFileExec() {
        ....
        Thread.Sleep(100);
        ....
    }

2 个答案:

答案 0 :(得分:2)

  

如何在不挂断UI的情况下专门“睡眠”后台线程?

通过在新线程上调用Thread.Sleep,这正是您正在做的事情。你确定你没有从主线程中调用createFileExec吗?

答案 1 :(得分:0)

詹姆斯是对的,没有理由让用户界面挂起。

你可以尝试的快速黑客是使用循环而不是Thread.Sleep。

for (int i = 1; i <= 10000; i++)
{
      Console.WriteLine("."); //To know that the thread is asleep.
}