当前位置: 首页 > 编程语言 > C#

如何使用BackgroundWorker事件RunWorkerCompleted分享

时间:2023-04-10 18:37:48 C#

如何使用BackgroundWorker事件RunWorkerCompleted总之,我已经知道了WinForm中BackgroundWorker处理多线程情况的基本用法。代码结构如下。在应用程序的主线程中。刚开始后台工作。if(backgroundWorker1.IsBusy!=true){//启动异步操作.backgroundWorker1.RunWorkerAsync();然后它触发DoWork事件。所以我们可以在那里做点什么。privatevoidbackgroundWorker1_DoWork(objectsender,DoWorkEventArgse){BackgroundWorkerworker=senderasBackgroundWorker;......//报告进度。工人。报告进度(iProgress);....}然后我们只需要处理ProgressChanged事件来显示BackgroundWorker的进度。privatevoidbackgroundWorker1_ProgressChanged(objectsender,ProgressChangedEventArgse){//showprogress.resultLabel.Text=(e.ProgressPercentage.ToString()+"%");DoWork完成后或出现异常。RunWorkerCompleted事件将触发。这是我处理此事件的问题。请帮助审查他们。谢谢。我注意到RunWorkerCompletedEventArgse有一个名为“Result”的属性,它有什么用?我该如何使用它?是否可以接收我的自定义异常消息而不是e.error?如果可以,如何制作?privatevoidbackgroundWorker1_RunWorkerCompleted(objectsender,RunWorkerCompletedEventArgse){if(e.Cancelled==true){resultLabel.Text="Canceled!";}elseif(e.Error!=null){resultLabel.Text="Error:"+e.Error.Message;}else{resultLabel.Text=e.Result.ToString();}}RunWorkerCompletedEventArgs的Result属性是您在DoWork()中分配给DoWorkEventHandler的Result属性的DoWorkEventHandler。您可以为它分配任何您喜欢的东西,因此可以返回整数、字符串、对象/复合类型等。如果在DoWork()中抛出异常,则可以在RunWorkerCompletedEventArgs的Error属性中访问该异常。在这种情况下,访问Result属性将导致抛出TargetInvocationException。publicclassMyWorkerClass{privatestring_errorMessage="";publicstringErrorMessage{get{return_errorMessage;}设置{_errorMessage=值;}}publicvoidRunStuff(objectsender,DoWorkEventArgse){//...在这里放一些代码然后在你需要的时候填充ErrorMessage}}然后是你使用它的类publicclassMyClassUsingWorker{//引用了类所在的类worker将运行privateMyWorkerClassmwc=null;//运行workerpublicvoidRunMyWorker(){mwc=newMyWorkerClass();BackgroundWorkerbackgroundWorker1=newBackgroundWorker();backgroundWorker1.DoWork+=newDoWorkEventHandler(mwc.RunStuff);backgroundWorker1.RunWorkerCompleted+=newRunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);backgroundWorker1.RunWorkerAsync();}privatevoidbackgroundWorker1_RunWorkerCompleted(objectsender,RunWorkerCompletedEventArgse){stringstrSpecialMessage=mwc.ErrorMessage;if(e.Cancelled==true){resultLabel.Text="已取消!";}elseif(e.Error!=null){resultLabel.Text="Error:"+e.Error.Message;}else{resultLabel.Text=e.Result.ToString();您可以使用Result属性存储DoWork的任何结果并从Completed事件访问它,但如果后台工作进程被取消或抛出异常,您将无法访问结果。您将在此处找到更多详细信息。以上就是C#学习教程:如何使用BackgroundWorker事件RunWorkerCompleted的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: