■9291 / inTopicNo.1) |
マルチスレッドの終了の検知について |
□投稿者/ oikes (1回)-(2007/10/24(Wed) 12:17:02)
|
分類:[C#]
Visual Studio 2005でC#のプログラミングをしています。
複数のスレッドにおいてAutoResetEventのインスタンスを操作して、AutoResetEvent.WaitAllメソッドでそれらを検知し、 複数のスレッドがすべて終了するタイミングをとっています。 http://blog.livedoor.jp/gushwell/archives/cat_377440.html 上記のサイトの「AutorResetEventによる同期」という部分を参考にさせていただきました。 しかし実際に動かしてみると
追加情報: STA スレッドでの複数のハンドルの WaitAll はサポートされていません。
というエラーメッセージが発生します。 Visual Studio 2005においてメイン関数の上に標準でつけられている[STAThread]の部分の影響だと思いこれを削除したところ 目的通りの結果を得られることができました。
ただし現時点での私のスキルでは[STAThread]がなんなのか調べても理解できな状態です。 またスレッドに関しても初心者でどのような方法があるのかなどの経験がありませんが上記の方法が非常に簡単であったので 用いようと思いました。 スレッドの終了するタイミングをとるという処理はこれから多用していきたいと考えているので、
[STAThread]を単に削除してプログラミングを進めてもよいのか、 スレッド終了検知をほかの方法を用いて行うべきかのか、
その方向性についてご指導いただけるとうれしいです。
私が作っているプログラムは複数のコンピュータに処理を分散させて計算を行うというもので 特に使っているのが通信関係のSocketクラスなどの部分です。 通信を行う際マルチスレッドを用いて複数の要求に対処しています。 このあたりの方向性につきましても何かご指摘ございましたらよろしくお願いします。
|
|