2

私の Web サービスは から継承してSystem.Web.Services.Protocols.SoapHttpClientProtocolいます。

タイムアウトを設定しようとしました:

service.Timeout = 5000; // 5 secs

しかし、何も起こりません - TimeoutException も他のものもありません。宣言なしで試してみたところ、"Connection Timed Out". デフォルトが 100 秒であることを考えると、190 は奇妙です。

とにかく、Timeout プロパティは「のみ」の同期呼び出しで機能するように見えるので、私の場合、なぜ機能しないのか不思議ではありません。

私はそのように非同期でメソッドを呼び出しています:

service.GetInfoCompleted += service_GetInfoCompleted;
service.GetInfoAsync();

どうすれば問題を解決できますか?

どんな助けでも大歓迎です!

4

2 に答える 2

1

これを行う「ネイティブ」な方法がないため、独自のTimerを実装する必要がありました。

経過時間が 10 秒になった後、非同期メソッド呼び出しの Abort() を呼び出すことができます

于 2013-03-19T08:07:54.970 に答える
0

service.GetInfoAsync() はIAsyncResultを返す必要があります。操作が完了するまで 5 秒間待つことができます。完了していない場合は、タイムアウトを処理します。

var result = service.GetInfoAsync();

if(!result.AsyncWaitHandle.WaitOne(5000)){
     // handle timeout
}
于 2013-03-18T10:36:48.747 に答える