7

C#AsyncCTPに関するJonSkeetのプレゼンテーションを見始めました。タイムアウトの指定に関しては、彼はつまずきました。

F#への露出がかなり限られているため、タイムアウトを指定するための直感的で一元化された簡単な方法があります。それで、私は現在の状況が何であるか疑問に思っています:C#非同期CTPはF#非同期ブロックランナーが行うすべてのことを行うことができますか?違いと制限を概説した文書はありますか?


追加の詳細:F#では、非同期ブロックランナーは以下を指定する方法を提供します。

  1. 例外フロー
  2. タイムアウトフロー
  3. キャンセルフロー
  4. 上記の3つの機能への拡張性

F#でこれらのことを行う方法は次のとおり です。引数の順序とパイプ右演算子

4

1 に答える 1

3

タイムアウトについて言及したことすら覚えていませんが、あなたの言葉を借ります:)

タイムアウトを達成するためにタスクを作成するのはかなり簡単です。「遅延」である2番目のタスクを作成し、それまたは元のタスクのいずれかが完了するのを待ちます。どちらが先に到着した場合でも、可能であればもう一方をキャンセルします(キャンセルトークンを使用)。新しく作成されたタスクは、メイン操作の結果(成功した場合)または「遅延」が最初に終了した場合は例外のいずれかで完了します。

AsyncCtpLibrary.dllで直接サポートされているようなものはありませんが、提供されているツールからかなり簡単に構築できます。「タスクベースの非同期パターンの概要」および「TPLデータフロー」のドキュメントを調べて、それらがカバーしているかどうかを確認することもできます。

于 2011-05-05T05:36:09.490 に答える