0

私はプロキシテスト機能を持っています。その中に catch ブロックがあり、指定された時間 (タイムアウト) が経過した後、プロキシが適切でない場合は false フラグを返します。問題は、例外が存在しない場合でも、関数が 10 回ごとにハングすることです。実際には、HttpWebResponse.Timeout は正しく機能しません (または、機能するかもしれませんが、使用方法がわかりません)。try...catch がすべてのエラーをキャプチャしない場合に備えて、特定の時間の経過後にメソッドが自動的に false フラグを返すようにするにはどうすればよいですか?

4

1 に答える 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 に答える