大規模な自動化プロセスの一環として、別のマシンでいくつかの作業呼び出しサービスを実行するサードパーティAPIを呼び出しています。最近、他のマシンが利用できなくなるたびに、リモートサーバーに接続しようとしているときに、APIコールが時には最大40分間スピンしてしまうことが発見されました。C#でのスレッディングの合理的な使用?
私たちが使っているAPIはタイムアウトを指定する方法を提供しておらず、私たちのプログラムはそれほど長く待たされたくないので、スレッドがタイムアウトを強制する良い方法だと思っていました。結果のコードは次のようになります。
Thread _thread = new Thread(_caller.CallServices());
_thread.Start();
_thread.Join(timeout);
if (_thread.IsAlive)
{
_thread.Abort();
throw new Exception("Timed-out attempting to connect.");
}
は基本的に、私はAPICall()実行させたいが、それはまだ、タイムアウトが経過した後に起こっている場合、失敗するそれを殺すし、上に移動しようとしていると仮定します。
私はC#でスレッドへの新たなんだと.NETランタイム上で、私は二つの関連質問をしようと思いましたので:
は、私は「何のための.NETライブラリでより良い/より適切なメカニズムがあります私は何をしようとしているのでしょうか?
どのようにタイムアウトを処理しますか?不足しているサーバーに接続するためにコンポーネントが最大40分間試し続けますか?私は、コンポーネントが接続しようとするのを止める方法について質問したと思います。 – Cybis
申し訳ありません、サンプルコードを追加する編集中です...タイムアウトの質問は、DateTime.Now