ふらっとC#,C♯,C#(初心者用) Part38at TECH
ふらっとC#,C♯,C#(初心者用) Part38 - 暇つぶし2ch458: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を非同期的に更新する処理を匿名メソッドの
「継続」の利点を生かして簡潔に書く例になりました。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch