私はプロキシテスト機能を持っています。その中に catch ブロックがあり、指定された時間 (タイムアウト) が経過した後、プロキシが適切でない場合は false フラグを返します。問題は、例外が存在しない場合でも、関数が 10 回ごとにハングすることです。実際には、HttpWebResponse.Timeout は正しく機能しません (または、機能するかもしれませんが、使用方法がわかりません)。try...catch がすべてのエラーをキャプチャしない場合に備えて、特定の時間の経過後にメソッドが自動的に false フラグを返すようにするにはどうすればよいですか?
1 に答える
1
リンクが見つかりませんでした。その解決策は、SOで少し前に見つけました。
public class TimeoutInvoker
{
public static void Run(Action action, int timeout)
{
var waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset);
AsyncCallback callback = ar => waitHandle.Set();
action.BeginInvoke(callback, null);
if (!waitHandle.WaitOne(timeout))
throw new TimeoutException("Timeout.");
}
}
アクションとタイムアウトを引数として使用するだけです。例:
TimeoutInvoker.Run(()=>LongRunningFunction(), 60000);
于 2014-06-17T05:38:26.590 に答える