2015-09-17 5 views

答えて

5

Stop()に電話する場合は必要ありません。

がそうでなければhttps://msdn.microsoft.com/en-us/library/dn235890(v=vs.118).aspx

を参照してください、あなたがそれらを使用して行われたとき、あなたは常にIDisposableオブジェクトを処分しなければなりません。

それは(すなわち、現在のスレッドをブロックする)時間がかかりすぎている場合は、単にTaskにそれを停止、のようなもの:

Task.Run(()=>hubConnection.Stop()); 
+1

あなたの答えをありがとう。 'stop()'は、 'Dispose()'とまったく同じものです。シグナルソースコード 'protected virtual void Dispose(bool disposing) { if(disposing) { Stop(); } } ' – cangosta

+1

別のタスクで接続を処理するのは難しいことですが、これは一般的な方法ですか? – cangosta

+1

@cangosta、はい、それをブロックしないようにするのが一般的です。 –

1

あなたはそれがあまりにも多くの時間を要しとはどういう意味ですか?あなたは詳細を教えてください。タイムアウト例外が出ますか?ブック一言でC#5.0から

(ほぼすべての場合に)従うべき安全規則がある それは話-でしょうができ-if使い捨てオブジェクト「疑いで、処分する場合。」次のように言ってください:

私と一緒になったら、教えてください。単純に放棄された場合、 は、他のオブジェクトインスタンス、アプリケーションドメイン、 コンピュータ、ネットワーク、またはデータベースの問題を引き起こす可能性があります。

私はそれがデッドブレイカーではないと言います。あまりにも長い時間がかかることを知るには、役に立つかもしれません。

+0

実際には、それだけでブロック実行中のスレッドとは、正常終了します。例外はスローされません。私はなぜ処分するのに時間がかかるのか理解できません。 – cangosta

+2

オブジェクトを廃棄するのに30秒かかる – cangosta

+0

実際には、処理操作のデフォルトのタイムアウトは30秒です。 – cangosta