ふらっとC#,C♯,C#(初心者用) Part38
at TECH
458:443
09/03/07 04:35:32
>>430の問題解決しました。
ディスパッチャのノーマルプライオリティのキューが一杯になってしまって、
和を取っているスレッドの処理が終わってからようやくキュー内の処理が
全て完了する、という形になっていたためでした。ディスパッチャスレッド
での処理の優先順位を下げる事で、ディスパッチャがキュー内の処理を全部
やっつけようとせず、順次こなしていくようになりました。
ディスパッチャスレッドでの処理の優先順位を上げなければならないと
全く逆に勘違いして大はまりしてしまった。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Thread sum100Thread = new Thread(new ThreadStart(sum100));
sum100Thread.Start();
}
private void sum100()
{
int s = 0;
for (int i = 1; i <= 100; i++) {
s += i;
int s_ = s;
this.Dispatcher.BeginInvoke((Action)delegate {
this.Label1.Content = s_.ToString("0");
}, DispatcherPriority.Background, null);
}
}
これでようやく、UIを非同期的に更新する処理を匿名メソッドの
「継続」の利点を生かして簡潔に書く例になりました。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5377日前に更新/246 KB
担当:undef