[英]Using delegate for async await c#
我想使用委托来调用 function,它应该在 UI 上显示我的进度条更新。 我怎样才能做到这一点?
第一个带代表的 class
public delegate void DelegateProgress();
public DelegateProgress mDelegateProgress;
public callDelegate(){
mDelegateProgress();
}
在我的用户界面 class 中,它看起来像这样:
tReaderFaces.mDelegateProgress = tReaderFaces_ProgressChanged;
private void tReaderFaces_ProgressChanged()
{
lStatus.Content = "Checking Component " + mComponentCounter++ + "/" + mContext.mComponents.Count();
++pProgress.Value;
}
我怎样才能做到这一点异步?
我建议您使用 BackgroundWorker class,因为它会自动将 ProgressChanged 事件处理程序中的任何调用编组回 UI 线程:
private void prgg(int maxProgress) //called on the UI thread
{
progressBar1.Value = 1;
progressBar1.Minimum = 1;
progressBar1.Maximum = maxProgress;
var bgw = new BackgroundWorker();
bgw.ProgressChanged += bgw_ProgressChanged;
bgw.DoWork += bgw_DoWork;
bgw.WorkerReportsProgress = true;
bgw.RunWorkerAsync();
}
void bgw_DoWork(object sender, DoWorkEventArgs e)
{
// do your long running operation here (this will execute on a background thread)
for (int i = 1; 0 < maxProgress; ++i)
{
//do some work...
((BackgroundWorker)sender).ReportProgress(i);
}
}
void bgw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.