BT

.NET 4のキャンセルフレームワーク

| 作者: Al Tenhundfeld フォローする 0 人のフォロワー , 翻訳者 猪股 健太郎 フォローする 0 人のフォロワー 投稿日 2009年6月4日. 推定読書時間: 2 分 |

原文(投稿日:2009/6/3)へのリンク

.NET 4には、キャンセルに対応したアプリケーションやライブラリの構築を支援する新しい型が含まれる予定である。CancellationToken、CancellationTokenSource、そしてキャンセル例外という新しい型は、協調的なキャンセルフレームワークを提供する。

新しい型でサポートできるように設計された発端の原則を以下に記す。

  • どんな作業単位が開始したとしても、それにはキャンセル要求に応じた早期終了をサポートする一貫した手段がなければならない。
  • 他のさまざまな可動部分を制御するような作業単位は、キャンセル要求を簡単に連鎖させることができなければならない。
  • ブロッキング呼び出しは、キャンセルをサポートできなければならない。
  • PLINQ列挙子におけるMoveNext()のような複合操作の呼び出しは、単純だが包括的なキャンセルのサポートをしなければならない。
  • インフラが長時間にわたる可能性のあるユーザコードへコールバックするときは、ユーザコードは協調的な方法でキャンセル要求を監視して反応することが可能でなければならない。
  • キャンセルは、きれいで一貫したセマンティックスを持ったAPIの一部として明記されていなければならない。
  • キャンセルの実行は強制的なものではなく協調的でなければならない。

このフレームワークは、2つの新しい型の上に構築されている。

  • CancellationToken
  • ‘キャンセルされる可能性がある要求’を表す構造体。この構造体は、メソッドにポーリングさせたり、キャンセル要求を受け取った時に起動するコールバックを登録させたりするための引数として用いられる。
  • CancellationTokenSource
  • キャンセル要求を開始するメカニズムを提供するクラス。また、関係するトークンに対する関連も提供する。この設計によって、キャンセルにおける2つの主要な操作を分離できる。1つはキャンセル要求の開始であり、もう1つはキャンセルの監視と対応である。具体的には、CancellationTokenだけを受け入れるメソッドは、キャンセル要求を監視することはできるが、キャンセル要求を開始することはできない。

これらの.NET 4の新しいキャンセル型は、堅牢で一貫したキャンセルの振る舞いを持ったシステムを構築するためのフレームワークを提供する。このフレームワークで、特に長期にわたる作業やブロッキング作業を扱うGUIやアプリケーションやライブラリを支援できるだろう。長期的には、現在提供されているサードパーティー製のキャンセルソリューション間の差異や矛盾点を減らすことが目標である。これらの新しい型は、Parallel Extensionsと相互運用する均一な契約も提供する。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT