2
CLIPS

BackgroundWorkerの再利用

2866日前に更新 aoki1210aoki1210 2872日前に登録
2010年08月13日 GMT 2010年08月07日 GMT

BackgroundWorkerクラスは、Threadを明示的に使用せずに非同期タスクを記述できる便利なコンポーネントであって、想定されるパターンに従って普通に使う限りにおいては特に困ることはないのだが、裏には複雑なスレッドモデルインフラストラクチャが隠されており、時にそれが表面化することがある。

例えば次のようにボタン(button1)とRichTextBoxを1個づつ持っているFormがあって、 ボタンを押すと何か外部のコンポーネントがStartする。 そのコンポーネントからStream経由で非同期にデータが上がってくる。 BackgroundWorkerを用いてそのStreamからのデータ読み込みとRichTextBoxへの表示を行う。 ボタンを再度押すと、現在のStreamは捨て、別の外部コンポーネントをStartして同様に非同期データのRichTextBoxへの表示を行う。このとき、BackgroundWorkerを新たに作るのは無駄なので、一旦Cancelして再起動させる。 というアプリケーションを考える。

この仕...

カテゴリー: プログラム(C#/VB/C++/F#/PS/Iron..) | クリック数: 108 | | ソースサイト: d.hatena.ne.jp | カウンタを表示
タグ: C#

まだコメントはありません。最初のコメントを登録してみませんか?

コメントするためにはログイン もしくは サインアップしてください。