C# 能实现一种效果吗

来源:百度知道 编辑:UC知道 时间:2024/06/11 02:53:14
总体来说就是实现异步效果,但是我要的不只是后台的异步,要的是
后台操作的时候能弹出个窗口告诉你后台现在在干什么。
比如360的打补丁功能,一边下一边打。
请问C#能实现这种效果吗?

完全可以,在弹出来的窗体中为后台的操作另起一个线程,这个线程通过事件向窗体发送进度即可。

弹出来的窗体:
private void FormWork_Load(object sender, EventArgs e)
{
Worker wk = new Worker();
wk.reportProgress += new ProgressEventHandler(this.RefreshProgress);
System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(wk.DoWork));
th.Start();
}

private void RefreshProgress(ProgressEventArgs e)
{
this.lblProgress.Text = "已经完成 "+e.Precent.ToString()+ "%。";
}

在其他的地方:
public class ProgressEventArgs
{
public int Precent;
}

delegate void ProgressEventHandler(ProgressEventArgs e);

public class Worker
{
public ProgressEventHandler reportProgress;

public void DoWork()
{
// 前半段工作完成后