-1

アプリケーションに多数のスレッドがありますが、そのうちの 1 つのスレッドだけを停止するにはどうすればよいですか? それを使用するThread.Sleep()と、アプリケーション全体が停止します。単一のスレッドを停止したいだけです。それ、どうやったら出来るの?私はc#を使用しています。

4

1 に答える 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 に答える