どのように待機スレッドが完了し続け?
-
08-06-2019 - |
質問
しているのか教えてくださいコードを始めるためのスレッドます。NET CF2.0:
ThreadStart tStart = new ThreadStart(MyMethod);
Thread t = new Thread(tStart);
t.Start();
ましこの内部ループの事項を完全に出します。方法をご紹介し待ち t.Start()
, このスレッドが完了する前にコードを続けてい?まBeginInvoke/EndInvokeするより良いオプションのためこのよ手作りでスレッド?
解決
かめさせていただきます。課したりすることは、スレッド?くすべての作業が始まりましたのループに仕上げ前のコードを続けていますが気にしないで、注文の仕事のループを終了、その後の参加呼び出したと言えるのでしょうか。追加詳細 ケビン-セッションミュージシャンの答え すべ参加 外部 のループを実行します。この手段が必要になりますコレクションの開催への参照をスレッド開始:
// Start all of the threads.
List<Thread> startedThreads = new List<Thread>();
foreach (...) {
Thread thread = new Thread(new ThreadStart(MyMethod));
thread.Start();
startedThreads.Add(thread);
}
// Wait for all of the threads to finish.
foreach (Thread thread in startedThreads) {
thread.Join();
}
一方、だという参加のループをいう結果には基本的に同じとして使用しないスレッドです。各反復ループの体をオートスレッドがその後すぐにで待ちで仕上がりです。
場合には個別のスレッドを一部の結果にメッセージを書き込むにはログ、例えば)それらのメッセージが表示されたのであるとの連携のスレッド)。このスレッドの出力を表明するものではなく、順調整します。
他のヒント
別の言い方を待つのスレッドに仕上がりを AutoResetEvent
.
private readonly AutoResetEvent mWaitForThread = new AutoResetEvent(false);
private void Blah()
{
ThreadStart tStart = new ThreadStart(MyMethod);
Thread t = new Thread(tStart);
t.Start();
//... (any other things)
mWaitForThread.WaitOne();
}
private void MyMethod()
{
//... (execute any other action)
mWaitForThread.Set();
}
だいくつかについて触れたいと思いこの適切ない作業開始の項目をチスレッドのがんに関するスレッドが終了するように、、。で各スレッドが完了した順にしたとして参加しています。
そのような場合にはそのいかんをスレッド数の作業項目です。んが膨張するのか
かった場合のを待つことも必要ですが、スレッドを完了することができない:
t.Join();
所属していません StackOverflow