すいません、色々な点で初心者な者です。
ディレクトリの中の、特定の拡張子を持ったファイルに対して、
ある長い処理を行いたいのですが、
ファイル数分のスレッドを起動してやりたいと思ってます。
(スレッドの中は、エラー処理等は無く、排他処理も要らない単純なものです。)
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文でぐるぐるまわして
全てのスレッド終了を待機するくらしか思いつかないのですが、
絶対これは間違ってると思ってます。
一般的に、このような場合はどのような実装にするのでしょうか?
(複数のスレッドが終了したかを監視するスレッドを作る??)
IAsyncResult の AsyncWaitHandle プロパティで操作の完了を待機できます。
WaitHandle を使って複数の WaitHandle を全て待機するには、WaitHandle.WaitAll メソ
ッドを使います。
WaitHandle で終了を待機しても、EndInvoke を呼ぶ必要がある点には注意してくださ
い。
あと、使っている .NET Framework のバージョンを書きましょう。
ずばりできました!!
ありがとうございます!!