b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

C # backgroundworker_C# stringbuilder_backgroundworker

电脑杂谈  发布时间:2017-01-17 23:06:16  来源:网络整理

C# stringbuilder_C # backgroundworker_backgroundworker

BackgroundWorker是对线程的一个简单包装,只起一个牵线搭桥的作用,具体的事都要你自己处理

比如你这里报告进度

首先,不是你把WorkerReportsProgress设为true它就会自动报告进度了。而是在DoWork事件处理器中,你觉得哪个时候该报告进度就调用一下BackgroundWorker.ReportProgress方法来触发ProgressChanged事件。

C # backgroundworker_C# stringbuilder_backgroundworker

然后,在ProgressChanged事件中,关于工作进度的所有信息,BackgroundWorker不会自动给你填写的(它又不知道),需要你在调用ReportProgress提供。

具体的说,就是e.ProgressPercentage和e.UserState这两个东西,它就是调用reportProgress方法时你传递的参数。你调用的时候没传,那就是空的。backgroundworker

你这里很可能,一是根本没调用ReportProgress,或者是调用ReportProgress时没有给e.ProgressPercentage传值。

C# stringbuilder_C # backgroundworker_backgroundworker

然后你取消工作的方法大概也不对。

CancelAsync这个方法只是对DoWork发出一个取消请求。

DoWork需要自己在适当的位置查询CancellationPending属性来获得这个请求。获得取消请求后,需要自己通过代码主动退出。有需要释放的资源先释放,没有的话就可以直接return。(并不是BackgroundWorker会自动帮你结束工作)

同时还要设置e.Cancel=true,这样在DoWorkerCompleted事件中才能区分工作是被取消了还是完成了。

你大概只是调用了CancelAsync(),DoWork中没有对应的响应代码。所以实际上工作没有被取消。backgroundworker


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27009-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...