3

マーキースタイルのプログレスバーのみを使用してloadingFormを作成しました。私のmainFormで、これを実行しようとしています。

//before downloading
loadingForm lf = new loadingForm();
lf.Show();
//start downloading
//finishdownloading
lf.Close();

LoadingFormが表示されましたが、進行状況バーが表示されず、フォームがクラッシュしたように見えました。ダウンロードが完了した後、loadingFormは閉じられ、アプリは正常に実行され続けました。LoadingFormには、次のものしかありません。

void loadingForm_Load(object sender, EventArgs e)
{
     progressbar1.visible = true;
}

私はすでにloadingForm.designでprogressbar1スタイルをマーキーに設定しています。これを修正するにはどうすればよいですか?よろしくお願いします。

4

3 に答える 3

3

バックグラウンドワーカースレッドが作業を行っている間、UIが進行状況を表示し続けることができるように、時間のかかるアクションについては、BackgroundWorkerクラスの使用を確認する必要があります。

于 2010-12-21T13:13:16.033 に答える
1

これは、ダウンロードとプログレスバー付きのフォームが同じスレッドで実行されていることが原因である可能性があります。BackgroundWorkerを使用して、フォームとは異なるスレッドでダウンロードを実行できます。

于 2010-12-21T13:12:52.383 に答える
0

UIスレッドには、UIを再描画するための「リソース」がない可能性があります。前述のようにバックグラウンドワーカーを使用するか、キュー内のアプリケーションメッセージを処理する必要があります。Show()メソッドからClose()メソッドまで、必ずApplication.DoEvents()を呼び出す必要があります。これにより、すべてのWindowsメッセージが処理されます(アプリケーションフォームへのメッセージの再描画とともに)

于 2010-12-21T13:27:26.463 に答える