« C# ComboBox の DataSource 書き換え時の即時反映 | トップページ | JFreeChartを使用したサンプルプログラム »

2010年12月21日 (火)

InvokeRequired と Invoke の使用例

C# における InvokeRequired と Invoke の使用例

※別スレッドからアイテム操作を行う場合に使用する

// delegate の定義(引数・戻り値をAddListViewと合わせる)
private delegate void AddListViewDelegate(ListView view, ListViewItem item);

/// <summary>
/// リストビューにアイテムを追加
/// </summary>
/// <param name="view">追加対象のリストビュー</param>
/// <param name="item">追加内容。</param>
private void AddListView(ListView view, ListViewItem item)
{
  // Invoke メソッドを使用するべきかどうかを判断(別スレッドの場合)
  if (InvokeRequired)
  {
    //AddListViewDelegateの作成(メソッドを指定)
    AddListViewDelegate dlg = new AddListViewDelegate(AddListView);

    // Invokeメソッドを使用する
    // dlg : delegateを指定
    // object[] : delegate で使用する引数を指定する。
    this.Invoke(dlg, new object[] { view, item });
    return;
  }
  // 通常の処理(同一スレッドの場合)
  view.Items.Add(item);
}

« C# ComboBox の DataSource 書き換え時の即時反映 | トップページ | JFreeChartを使用したサンプルプログラム »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/153605/50360688

この記事へのトラックバック一覧です: InvokeRequired と Invoke の使用例:

« C# ComboBox の DataSource 書き換え時の即時反映 | トップページ | JFreeChartを使用したサンプルプログラム »