4

VS2010 C# プロジェクトでは、MarshalByRefObject から派生したクラスがあり、Activator.GetObject を使用してそれを設定します。この派生クラスを使用して、ネットワークを介してマシンと通信します。

場合によっては、ターゲット マシンの電源が入っていて ping を実行できるが、通信したいプログラムが実行されていない場合があります。これにより、30 秒間待機した後に例外が発生します。派生した MarshalByRefObject が有効かどうかを確認する方法はありますか?

現在、try/catch がこの状況を処理していますが、30 秒の待機は受け入れられません。

4

1 に答える 1

4

タスクに Ping() メソッドを呼び出してもらい、タスクで明示的なタイムアウトを使用することができます...

Task task = new Task(() => { try { obj.Ping(); } catch {} });
task.Start();
if(!task.Wait(1000)) throw new TimeoutException();
// handle other task exceptions etc
于 2012-02-10T17:51:05.380 に答える