私は半年前にC#で作業しています。私は学んでいます。 私は私の仕事で私を助けているプログラムを持っています。それは私の職場で4種類のデータベースと通信します。それは完璧に動作していますが、今はもっとクーラーにしたいと思っていますが、私のメソッドは自分のデータベースと通信している間にUIをフリーズするので、プログレスリングをセットアップしたいときに立ち往生します。 私はバックグラウンドワーカーをセットアップしたいと思っています。私はボタンを押したときにbackgroundworkerがUIを更新し、そのための進捗状況を設定する方法を教えてください。
public partial class MainWindow : MetroWindow
{
BackgroundWorker workerThread = null;
public MainWindow()
{
InitializeComponent();
InstantiateWorkerThread();
progressrinG.IsActive = true;
}
private void InstantiateWorkerThread()
{
workerThread = new BackgroundWorker();
workerThread.ProgressChanged += WorkerThread_ProgressChanged;
workerThread.DoWork += WorkerThread_DoWork;
workerThread.RunWorkerCompleted += WorkerThread_RunWorkerCompleted;
workerThread.WorkerReportsProgress = true;
//workerThread.WorkerSupportsCancellation = true;
}
private void WorkerThread_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
}
private void WorkerThread_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
private void WorkerThread_DoWork(object sender, DoWorkEventArgs e)
{
//My huge method,asking 4 database that would update UI too
//... Textboxes,Grids,Expanders.
}
private void Button3_Click(object sender, RoutedEventArgs e)
{
workerThread.RunWorkerAsync();
while (workerThread.IsBusy)
{
progressrinG.Visibility = Visibility.Visible;
}
}
}
はしても起動して、5〜10秒後にそれは私のメソッドを終了しますが、それをしている間、私のアプリケーションは、凍結されていると私はprogressringを参照してくださいいけません。
どうすればいいですか?または私は何をすべきですか?前もって感謝します!
ここでサンプルを見つけようとしていますが、私は自分のメソッドを編集しようとします。ありがとうございました。 Upvoted。 – Tamas555