1

3 つのバックグラウンド ワーカーを同時に実行するアプリケーションを作成しました。基本的に、3 つのデータグリッド ビューを更新します。私の問題は、最大化ボックスボタンまたはデータグリッドビューのどこかを押すと、プログラムが長時間ハングすることです。横スクロールはできますが、縦スクロールはできません。Backgroundworker_runworkercompleted を試してみましたが、スレッドがそれぞれのデータグリッドビューを更新した後に必要に応じて起動します。それは通常の動作ですか、それとも私は何か間違ったことをしていますか? PS: step メソッドを使用してプログラム全体を実行しましたが、コード内に無限ループはありません。よろしくお願いします

4

6 に答える 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 に答える