バックグラウンドワーカーを使用してテキストラベルを継続的に更新しようとしていますが、DoWorkの場合、ループを使用しないと一度だけ実行されますが、無限ループを使用するとGUIがフリーズ、これを解決するための任意のアイデア?本当に感謝します!私はC#で新しく、まだ勉強しようとしています。C#バックグラウンド作業者がGUIをフリーズしました
ここに私のコードです:メインフォームで
この:
backgroundWorkerX.DoWork += backgroundWorkerX_DoWork;
backgroundWorkerX.ProgressChanged += backgroundWorkerX_ProgressChanged;
backgroundWorkerX.WorkerReportsProgress = true;
backgroundWorkerX.RunWorkerAsync();
その後:
public void backgroundWorkerX_DoWork(object sender, DoWorkEventArgs e)
{
X = -(RSSI_PI1_ST1);
backgroundWorkerX.ReportProgress(X);
}
public void backgroundWorkerX_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
label9.Text = e.ProgressPercentage.ToString();
}
public void backgroundWorkerX_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
_ "無限ループを使用するとGUI" _ - whatループ? – MickyD
とにかく、あなたのループが 'ReportProgress'を含む非常に_tight_なら、それはすべてマーシャリングで物事を遅くするでしょう – MickyD
クイックレスポンスのおかげで、" public void backgroundWorkerX_DoWork "の下にループを置くと、データが変化しているのを見て、誰かがDoWorkの中に無限ループを置くことはできないと言っていますが、プログラムはこのループでループし続けますが、それを解決する方法はわかりませんでした... – tedhan