複数のスレッドの終了を待機したい – プログラミング – Home

複数のスレッドの終了を待機したい
 
通知
すべてクリア

[解決済] 複数のスレッドの終了を待機したい


M
 M
(@M)
ゲスト
結合: 21年前
投稿: 23
Topic starter  

すいません、色々な点で初心者な者です。

ディレクトリの中の、特定の拡張子を持ったファイルに対して、
ある長い処理を行いたいのですが、
ファイル数分のスレッドを起動してやりたいと思ってます。
(スレッドの中は、エラー処理等は無く、排他処理も要らない単純なものです。)

foreach( FileInfo fi in di.GetFiles() )
{
if( fi.Extension == XX )
{
SampleDelegate dlgt = new SampleDelegate( threadMethod );

IAsyncResult ar = dlgt.BeginInvoke( XX, XX, null, null );

int ret = dlgt.EndInvoke( ar );
}
}

はじめはさらっとこんな感じにしたのですが、
これじゃ終了を待っていて1個ずつしか動かないので、
「一気にスレッドを作成し」「全ての終了を待つ」という風にしなければならないので
すが、
得に後者をどうやればいいか悩んでいます。

同期オブジェクト(に順ずるもの)を配列に入れておいて、
For文でぐるぐるまわして
全てのスレッド終了を待機するくらしか思いつかないのですが、
絶対これは間違ってると思ってます。

一般的に、このような場合はどのような実装にするのでしょうか?
(複数のスレッドが終了したかを監視するスレッドを作る??)


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

IAsyncResult の AsyncWaitHandle プロパティで操作の完了を待機できます。
WaitHandle を使って複数の WaitHandle を全て待機するには、WaitHandle.WaitAll メソ
ッドを使います。
WaitHandle で終了を待機しても、EndInvoke を呼ぶ必要がある点には注意してくださ
い。

あと、使っている .NET Framework のバージョンを書きましょう。


返信引用
M
 M
(@M)
ゲスト
結合: 21年前
投稿: 23
Topic starter  

ずばりできました!!
ありがとうございます!!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました