2012-09-28 42 views
0

我开始一个线程,运行一些文件的例行任务,不幸的是,在该线程内调用Thread.Sleep回调挂断Windows指定的时间,即。我的光标冻结并且CTRL + ALT + DEL也不做任何事情。我如何特别“睡觉”后台线程而不挂断用户界面?Thread.Sleep内部线程回调挂起Windows

我使用创建线程这样的:

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

而且我的回调是这样的:

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

你可以显示其余的方法代码? – Tudor

+0

等待你的意思是你的整个操作系统被冻结或只是应用程序窗口? – Tudor

+0

这一切看起来不错..你确定它是使它的线程?该线程可能调用一个挂起在循环中的委托? – James

回答

2

我如何明确“睡眠”后台线程不挂断UI?

这就是您在新线程上拨打Thread.Sleep所做的。你确定你没有从主线程调用createFileExec吗?

0

James是对的,UI没有理由挂起。

可以尝试的快速入门是使用循环代替Thread.Sleep。

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