none
並列処理!? RRS feed

  • 質問

  • C#初心者です。

    今、フォームの上側に Labelを置きそれにカウント値を高速で表示し、下側にはデータをDataGridViewで表示しています。
    DataGridViewの表示件数が多いのでDataGridViewの表示に2秒くらいかかっています。
    このDataGridViewのデータを表示しはじめてから、終わるまで上側のカウント値の表示が止まってしまいます。

    並列処理をすれば、解決できるかとBackgroundWorkerを使用してみましたが改善されませんでした。
    どうやらDataGridView用のデータを作っているときは、並列処理されているようなのですが、DataGridViewを表示しているときには、やはりカウントが一時停止してしまいます。

    DataGridViewの表示件数を減らさないで解決する、なにか良い方法は、ないでしょうか?
    ちなみに上記のプログラムをEXE化し2つ同時に起動後、片側のDataGridViewを表示したときには、もう一方のカウント値は一時停止することなく表示しています。

    よろしくお願いします。

    2012年5月28日 12:57

回答

  • BackgroundWorker の ProgressChanged イベントと ReportProgress メソッドを使います。
    • 回答としてマーク 山本春海 2012年6月29日 7:17
    2012年5月28日 16:12
  • どこに時間がかかっているのかわかりませんが、本当に DataGridView の表示処理が重くなっているのであれば、基本的には解決できません。表示処理自体はバックグラウンド化できないからです。

    // VirtualMode が使えるかどうかは、あんまり DataGridView を使ってないので何ともいえませんが。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    • 回答の候補に設定 山本春海 2012年6月25日 8:04
    • 回答としてマーク 山本春海 2012年6月29日 7:17
    2012年5月28日 16:42
    モデレータ

すべての返信

  • BackgroundWorker の ProgressChanged イベントと ReportProgress メソッドを使います。
    • 回答としてマーク 山本春海 2012年6月29日 7:17
    2012年5月28日 16:12
  • どこに時間がかかっているのかわかりませんが、本当に DataGridView の表示処理が重くなっているのであれば、基本的には解決できません。表示処理自体はバックグラウンド化できないからです。

    // VirtualMode が使えるかどうかは、あんまり DataGridView を使ってないので何ともいえませんが。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    • 回答の候補に設定 山本春海 2012年6月25日 8:04
    • 回答としてマーク 山本春海 2012年6月29日 7:17
    2012年5月28日 16:42
    モデレータ
  • こんにちは、まさ20120528 さん。
     
    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
    その後いかがでしょうか。
    継続したご質問がないようなので、勝手ながら私のほうで参考になったのではと思われる投稿に回答としてマークさせていただきました。
    アドバイスくださったみなさん、ありがとうございます。

    いただいた情報の中で、解決に役立った投稿や、参考になる情報など有効な情報には回答としてマークすることをお願いしています。
    今後、同じ問題でこのスレッドを参照される方にも、有効な情報を活用いただけるかと思いますので、ご協力よろしくお願いいたします。

    今後とも MSDN フォーラムをよろしくお願いいたします。それでは。
    ____________                                                 
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2012年6月29日 7:17