アプリケーションに多数のスレッドがありますが、そのうちの 1 つのスレッドだけを停止するにはどうすればよいですか? それを使用するThread.Sleep()
と、アプリケーション全体が停止します。単一のスレッドを停止したいだけです。それ、どうやったら出来るの?私はc#を使用しています。
質問する
691 次
1 に答える
1
使用しThread.Sleep()
ているときは、このメソッドを呼び出したスレッドのみを停止しています。メイン スレッド (つまり、UI スレッド) が を呼び出すThread.Sleep()
と、アプリケーションがフリーズします (実際には他のスレッドは引き続き動作しますが、UI は更新されません)。したがって、スレッドを停止したい場合は、次のようにします。
- メインスレッドであってはなりません
Thread.Sleep()
そのスレッドを呼び出すだけです
例 (このコードがメインスレッドで実行されると仮定):
ThreadPool.QueueUserWorkItem(DoSomething);
Thread.Sleep(1000); // this will freeze application
これはコールバックです (バックグラウンド スレッドで実行されます)。
static void DoSomething(object state)
{
Thread.Sleep(5000); // this will not freeze application
}
于 2012-11-02T21:07:09.573 に答える