Dispatcher.Invoke

スレッドからUIを操作すると、例外が発生する。

ググったら、Dispatcher.Invokeを使うらしい。。。

みんなすごいな・・・

ソース

// グラフとGridの描画
private void DrawGraph()
{
// スレッドがUIスレッドかどうかをチェック
if (CheckAccess()) {
// 日付取得
string from = ((DateTime)datePicker_from.SelectedDate).ToString(“yyyy-MM-dd 00:00:00”);
string to = ((DateTime)datePicker_to.SelectedDate).ToString(“yyyy-MM-dd 24:00:00”);
// 件数取得
int count = int.Parse(textBox_DrawCount.Text);

// データ取得
dataGrid_data.DataContext = m_SQLiteDB.Query(from, to, count);

// グラフ表示
chart_data.DataContext = dataGrid_data.DataContext;
}
else
{
Dispatcher.Invoke(                  // 優先順位
DispatcherPriority.Normal       // デリゲート呼び出し
, new Action(DrawGraph)   // 呼び出しパラメータ
);
}

}

http://msdn.microsoft.com/ja-jp/library/system.windows.threading.dispatcher.invoke.aspx

Delegateしっかり理解しないとな・・・

コメントを残す

%d人のブロガーが「いいね」をつけました。