戻る非同期メソッドに事後条件を追加するための推奨される方法は何Task<T>
ですか?
私は次の提案を読みました:
http://social.msdn.microsoft.com/Forums/hu-HU/async/thread/52fc521c-473e-4bb2-a666-6c97a4dd3a39
この投稿では、各メソッドを同期として実装し、それを縮小してから、非同期の対応するメソッドを単純なラッパーとして実装することを提案しています。残念ながら、私はこれを実行可能な解決策とは考えていません(おそらく私自身の誤解による):
- asyncメソッドは、syncメソッドのラッパーであると想定されていますが、実際のコードコントラクトがないままであるため、必要に応じて実行できます。
- 非同期にコミットしているコードベースは、すべてに対応する同期を実装する可能性は低いです。その結果、他の非同期メソッドにsを含む新しいメソッドを実装すると、
await
結果的に非同期になります。これらのメソッドは本質的に非同期であり、同期に簡単に変換することはできません。それらは単なるラッパーではありません。
.Result
後者のポイントを使用できる、または.Wait()
代わりに使用できると言って無効にしたとしてもawait
(実際にはいくつかSyncContext
のsがデッドロックになり、とにかくasyncメソッドで書き直す必要があります)、私はまだ最初のポイントについて確信しています。
別のアイデアはありますか、それともコード契約とTPLについて私が見逃したものはありますか?