C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: タイマ配列のデリゲート


(過去ログ 19 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■7576 / inTopicNo.1)  タイマ配列のデリゲート
  
□投稿者/ H2O (1回)-(2007/09/10(Mon) 11:36:22)

分類:[C#] 

教えてください。

プロセスが5つあります。

プロセス数分、タイマ配列[5]でデリゲート処理をしています。

Timer[プロセス1〜5] AAA = new Timer(TimeDelegate,para,0,CHkTime(タイマ配列ごとに間隔が異なる));

TimeDelegateのメソッドは、プロセスの状態を確認し、落ちていたらAutoResetEventクラス.setで
メソッドを抜けます。

そして、プロセスが終了しているタイマをDispose()したいです。

ここでどうすればよいかわからないのですが、プロセスが複数あり、タイマ配列にした場合、
どのプロセスがTimeDelegateのメソッドでメソッドを抜けたか知りたいのですが、
どうすればよいのでしょうか?

処理としては、プロセスが複数ありそのタイマを発生させつづけ、
プロセスが終了したものがあったらタイマを解除するという処理がしたいです。

よろしくお願いいたします。

引用返信 編集キー/
■7688 / inTopicNo.2)  Re[1]: タイマ配列のデリゲート
□投稿者/ 七曜 (20回)-(2007/09/13(Thu) 03:13:37)
まず、本質的に単に5つのプロセスの動作状態だけを確認したいのであれば、Timerを使わなくても良いような気がします。
個々のプロセスの監視アプローチとしては、ProcessクラスのWaitForExit メソッドで待っていれば良いだけです。
ただし、WaitForExit メソッドは関連付けられたプロセスが終了するまで現在のスレッドを待機させることになるので
WaitForExitで待つコード自体は、Thread クラスを使用して、Main Threadとは別のThreadで待機させれば良いでしょう。

どうしてもTimerを使いたいのであれば、第2引数で配列のインデックスでも渡しておいて、第1引数のCallbackの終了時に
Main側へEventでも投げてあげれば良いかな、と思われます。もちろんEventの引数に第2引数で渡した配列のインデックスを返してあげれば
どのTimerをDisposeすれば良いかは判別できますよね。
引用返信 編集キー/
■7717 / inTopicNo.3)  Re[2]: タイマ配列のデリゲート
□投稿者/ H2O (2回)-(2007/09/13(Thu) 15:44:00)
七曜さんありがとうございました。

第二パラメータに配列番号を設定したらうまくいきました。

ありがとうございました。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -