C# 在线程回调中睡眠会挂起窗口

C# 在线程回调中睡眠会挂起窗口,c#,.net,multithreading,timer,C#,.net,Multithreading,Timer,我正在启动一个线程,该线程运行一些文件的例行任务,不幸的是,在该线程回调中调用Thread.Sleep,在指定的时间内挂起窗口,即我的光标冻结,CTRL+ALT+DEL也不做任何操作。如何在不挂断UI的情况下专门“睡眠”背景线程 我正在使用以下方法创建线程: createThread = new Thread(new ThreadStart(this.createFileExec)); createThread.Start(); 我的回调是这样的: private void cre

我正在启动一个线程,该线程运行一些文件的例行任务,不幸的是,在该线程回调中调用
Thread.Sleep
,在指定的时间内挂起窗口,即我的光标冻结,CTRL+ALT+DEL也不做任何操作。如何在不挂断UI的情况下专门“睡眠”背景线程

我正在使用以下方法创建线程:

 createThread = new Thread(new ThreadStart(this.createFileExec));
 createThread.Start();
我的回调是这样的:

    private void createFileExec() {
        ....
        Thread.Sleep(100);
        ....
    }
如何在不挂断UI的情况下专门“睡眠”背景线程


这正是您在新线程上调用
Thread.Sleep
所做的。您确定没有从主线程调用
createFileExec

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

您可以尝试的一个快速方法是使用循环而不是线程。睡眠

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

用于(int i=1;i)看起来一切正常..你确定它正在进入线程吗?线程可能正在调用挂起在循环中的委托吗?你能显示方法代码的其余部分吗?等等,你是说你的整个操作系统都被冻结了还是仅仅是应用程序窗口?@Tudor我猜是整个操作系统,因为他说ctrl+alt+del什么都不做。@rajat:这很奇怪那么。