3 つのバックグラウンド ワーカーを同時に実行するアプリケーションを作成しました。基本的に、3 つのデータグリッド ビューを更新します。私の問題は、最大化ボックスボタンまたはデータグリッドビューのどこかを押すと、プログラムが長時間ハングすることです。横スクロールはできますが、縦スクロールはできません。Backgroundworker_runworkercompleted を試してみましたが、スレッドがそれぞれのデータグリッドビューを更新した後に必要に応じて起動します。それは通常の動作ですか、それとも私は何か間違ったことをしていますか? PS: step メソッドを使用してプログラム全体を実行しましたが、コード内に無限ループはありません。よろしくお願いします
2498 次
6 に答える
2
Backgroundworker1.RunWorkerAsync()
datagridview スクロール バーを一時的に無効にするために呼び出す直前に、このコード行を配置します。
DataGridView1.ScrollBars = ScrollBars.None
BackgroundWorker1_RunWorkerCompleted
このコード行をイベントに追加して、datagridview のスクロール バーを再度有効にします。
DataGridView1.ScrollBars = ScrollBars.Both
これにより、アプリケーションが応答しなくなることはありません。
于 2014-07-16T11:47:37.093 に答える
0
どういうわけかUIスレッドをまだブロックしているようです。いくつかのコード スニペットを投稿すると役立つ場合があります。また、プロセスの CPU 使用率はどのくらいですか? CPU 使用率が高い場合は、UI スレッドが何らかの形で不足している可能性があります。
于 2010-03-08T16:47:21.260 に答える
0
さて、問題の解決策を見つけました。認識された問題点を順次排除しながら、backgroundworker.dowork イベントの外で datagridview を呼び出し、問題を解決しました。特に何が間違っているのかわからない場合は、「バックグラウンドワーカースレッド内からデータグリッドビューを更新しないでください」という話の教訓:)。将来誰かに役立つことを願っています。
于 2010-03-09T20:27:38.253 に答える