0

いくつかのファイルでルーチンタスクを実行するスレッドを開始していますが、残念ながら、Thread.Sleepそのスレッドコールバック内で呼び出すと、指定された時間、つまりWindowsがハングアップします。カーソルがフリーズし、CTRL + ALT+DELも何もしません。UIをハングアップせずにバックグラウンドスレッドを具体的に「スリープ」するにはどうすればよいですか?

私はこれを使用してスレッドを作成しています:

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

そして私のコールバックはこのようなものです:

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

2 に答える 2

2

UI をハングアップさせずにバックグラウンド スレッドを具体的に「スリープ」させるにはどうすればよいですか?

それはまさにThread.Sleep、新しいスレッドで呼び出すことによって行っていることです。createFileExecメインスレッドから呼び出していませんか?

于 2012-09-28T10:55:44.913 に答える
0

James の言うとおりです。UI がハングする理由はありません。

試すことができる簡単なハックは、 Thread.Sleep の代わりにループを使用することです。

for (int i = 1; i <= 10000; i++)
{
      Console.WriteLine("."); //To know that the thread is asleep.
}
于 2012-09-28T10:59:17.060 に答える