在我们的程序中,经常会有一些耗时较长的运算,为了保证用户体验,不引起界面不响应,我们一般会采用多线程操作,让耗时操作在后台完成,完成后再进行处理或给出提示,在运行中,也会时时去刷新界面上的进度条等显示,必要时还要控制后台线程中断当前操作。
在.net中,提供了一个组件backgroundworker就是专门解决这个问题的。backgroundworker类允许在单独的专用线程上运行操作。 耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面(ui)似乎处于停止响应状态。如果需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用backgroundworker类方便地解决问题。
为了显示后台操作的执行进度,首先要使workerreportsprogress等于true,然后调用backgroundworker的reportprogress()方法,通过它传递操作完成的满江红词牌进度值,此外,该方法触发progresschanged事件,在此事件中,通过progresschangedeventargs的实例,接收到主线程传递过来的参数。
为了使 backgroundworker 可以取消后台正在执行的操作,首先要把属性workersupportscancellation 的值设置为 true。接着调用cancelasync()方法,该方法使得属性cancellationpending 为true,利用cancellationpending 属性,可以我的理想作文300字判断是否取消后台异步操作。
当后台操作完成以后,无论是completed 还是cancelled,runworkercompleted()事件都会被触发,通过此方法可以将后台操作的完成结果反馈给用户。runworkercompleted 事件处理函数会在dowork 事件处理函数返回后被调用。通过它我们可以进行一些运算结束后的操作,比如禁用取消按钮,异常处理,结果显示等。注意,如果想要拿到e.result,您需要在bgworker_dowork方法中设置 e.result属性另外,通过runworkercompletedeventargs实例的cancelled 属性,以判断是否是cancel操作使得后台操作终止;
在执行dowork事件时doworkeventargs实例的result属性,返回值到用户;在runworkercompleted事件里,runworkercompletedeventargs 实例的result属性接收值;
后台代码:
运行界面:
操作完成界面有用的英语怎么读:
接收返回值:
取消后台操作:
到此这篇关于c#使用backgroundworker控件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-05 21:43:37,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/150df3ba027c11f0009ad9dbe75b4a21.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C#使用BackgroundWorker控件.doc
本文 PDF 下载地址:C#使用BackgroundWorker控件.pdf
留言与评论(共有 0 条评论) |