バックグラウンド ワーカーの進行状況バーの問題に直面しています。
public void UpdateDevices(object sender, EventArgs e) {
bw_1.RunWorkerAsync();
Thread.Sleep(100);
WebSwitchHandler.GetDeviceStats(NewRoom);
//Above line opnes a socket and takes 5 seconds to return back//
}
private void bw_1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i <= 100; i++)
{
Thread.Sleep(100);
bw_1.ReportProgress(i);
}
}
private void bw_1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
プログレス バーは、ソケットが返された後にのみ更新されます。ソケット クラスにはスレッドがなく、GUI 全体が 5 秒間ブロックされます。
なぜこれが機能しないのですか?GUIでこれを処理する方法を提案します。