一开始用的Thread创建线程,由于涉及到更新Ui经常出现停止工作(StopWorking)的报错。
经热心网友提醒,使用了BackGroundWorker组件实现相同的功能(异步更新UI界面)。
MSDN中明确说【您必须非常小心,确保在 DoWork 事件处理程序中不操作任何用户界面对象。 而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。】
这里的异步处理,就是去干一个长时间的事情(DoWork),然而过程中可以经常抛出事件通知(ProgressChanged),然后完毕了再抛出一个事件通知。就是这么简单的事情。
说了这么多直接上代码:
BackgroundWorker backgroundWorker1 = new BackgroundWorker();
backgroundWorker1.WorkerReportsProgress = true; // This event will be raised on the worker thread when the worker starts
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork); // This event will be raised when we call ReportProgress
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
backgroundWorker1.WorkerSupportsCanc