还记得BackgroundWorker吗?

2024-03-20 00:58
文章标签 记得 backgroundworker

本文主要是介绍还记得BackgroundWorker吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天一早醒来,猛然发现,很久没写博客了,算一算,其实应该不到一个月,可总觉得寰宇一个月,世上已千年。是啊,于是内心萌发了一股冲动的力量,今天该写点什么,可是,一时想不出来。

打开电脑,突然想起来,昨天下午,有位仁兄和我讨论过一个事,不妨拿来说说。

她说她的牛逼程序要处理一堆东东,要弄个进度条作提示,不过进度条是在另一个窗口中的,她的想法是,在开始处理数据时弹出进度对话框,实时显示处理进度,当处理完成后关闭对话框。乍看起来其实不难,不过她遇到了以下问题,故在群里提问。

1、模态对话框的问题。

这问题好办,一般来说,要长时间来处理数据,应该考虑后台异步操作,用砖家的话讲就是多线程。不过她在显示窗口时调用了ShowDialog方法,这样代码会一直停在那里,直到窗口关闭。

如果是异步操作,通常来说,在启动后台任务后会马上返回,这么一来,只要把代码的顺序调一下就可以解决这问题,先启动后台任务,再调用ShowDialog方法,这样一来,就算代码停在ShowDialog那里也不会影响后台任务的执行

2、如何控制其他窗口中控件。

可以在在窗口类中定义公共方法来对控件进行某些操作,之后在其他地方就可以通过这些公共方法来调控。如果是跨线程调用,应当考虑使用委托或事件来调用。不然你学了委托和事件干吗呢?

另一种方法就是直接把进度窗口中的ProgressBar控件声明为public,这样其他类就可以轻松访问了。

3、后台任务如何更简单。

方法是灵活的,有很多种。最简单的是利用.NET 4.5和C# 5.0 中的新特性,这种方法肯定是最简单的。第二种则是使用.NET 4 中新加的Task类来调度线程;比较传统,在2.0时代用得最多的方法是直接用Thread类。

但是,有一个组件是专为后台任务而开放的,忘了没有?——BackgroundWorker,也许有些朋友

这篇关于还记得BackgroundWorker吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/827782

相关文章

用了这么多年的Spring 你还记得?

本文的阅读最好的方式结合代码一起看,在很久没有回顾的时候可能会忘记一些spring的扩展点,已经spring 到底怎么玩的?本文是作者了解spring 到工作的第四个年头 从实习开始2016年,这里做个总结,用了这么多,估计写着crud 忘了spring的奥秘了。 一、yy一下Bean创建的过程 首先得承认spring 这个太强大,一般的java开发者根本创造不出来这么强大的一个玩意,从

网易云音乐故障 2 小时,这次到底谁背锅?(今天记得领补偿)

大家好,我是程序员鱼皮,8 月 19 日下午,网易云音乐突发严重故障,并登顶微博热搜,跟黑神话悟空抢了热度。 根据用户的反馈,故障的具体表现为:用户无法登录、歌单加载失败、播放信息获取失败、无法搜索歌曲等等,几乎是无法使用了,妥妥的 P0 级事故! 根据官方发布的说明,本次故障的主要原因是基础设施,导致网易云音乐各端无法正常使用: 什么是基础设施?是指支持整个系统运行的基础性服务

发文章不违规的5种解决方案,非常适用,记得收藏!

之前以为使用AI写出来的文章,只要检测通过就不会违规,结果却还是让我有些失望。最近测试几款AI工具,测试结果都还是会存在违规情况,无法全文发布。 AI是听从人的指令,只能说是如何下指令,这个非常重要。至于文章里面出现的违规内容,这种就算你使用AI测试,也无法做到全部通过。 原因不是文章内容的问题,而是每个平台的审核机制,还有同平台上不同等级的豁免权益不一样。把账号等级养高,权重高的账号风险就越

成都爱尔胡建斌院长提醒近视超过600度,记得每年检查眼底!

高度近视是指近视度数在600度及以上的一种屈光不正的状态。 近视的眼睛必定是变形的。在正常情况下,人的眼球类似球体,但随着近视加深,眼轴变长,眼球体积逐渐增大,整个眼球从圆球型向椭圆球形发展,而眼球壁就像吹泡泡一样,体积增大拉扯着后壁变薄,很容易导致眼底的各种病变。 高度近视分为两种 有可能在成年后趋于稳定,度数不再增加,不伴有不可逆视觉损害的眼底病变,此类我们称之为单纯性高度近视。 2、

【转载于百度空间】C# WinForm中的BackgroundWorker控件的使用方法

C# BackgroundWorker 使用方法 MSDN解析网址: msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker(VS.80).aspx BackgroundWorker 类允许您在单独的专用线程上运行操作。 耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户

程序中调用DB存储过程记得异常处理时尝试回滚可能存在的事务

程序中调用DB过程要注意这种情况: 有些存储过程需要执行比较久,在数据库中直接跑本身没有出错,但从程序中调用该存储过程会由于超时进入程序异常处理,这时数据库后台依然在跑着该存储过程,如果该存储过程中有启用事务,那么对于程序中的该连接中这时已经存在着未提交未回滚的事务(尽管事务是在DB存储过程中启动的),如果不通过该连接回滚释放,不仅会无端继续占用着连接会话资源(此时dispose连接并不能有效释

C# BackgroundWorker实现WinForm异步操作的例子

在最近的一个Smart Client项目中,为了演示异步操作的实现,写了一个基于BackgorundWorker的例子。由于这个理基本上实现了BackgorundWorker的大部分功能:异步操作的启动、操作结束后的回调、异步操作的撤销和进度报告等等。尽管没有太多的技术含量,姑且放上来与大家分享。 1、场景描述 下面是程序运行时的截图。本程序模拟这样的一个场景:有两组相互独立的数据需要逐条获取

亲们,天冷了记得保暖哦

临近年关,天气越来越冷了,早上窝在被窝里,那叫一个舒服啊,以前上班时没办法,不能赖床,也就不能享受这般的温暖,现在天天宅在家里,虽能舒服的享受这温暖的感觉,越又是无比的无聊,本以为年底能快乐开心的过个年,可又让我失望了,失去了一个最宝贵的东西,特别的心痛,每每看着电视,都会时不时的想起,而独自伤心的掉着眼泪. 在此,也希望2015能收获好的结果,一起加油!

记得你的好

记得你的好  面朝流星的许愿偷偷祈祷,希望你漫游云端隔绝烦恼。 总喜欢每次睡醒的大清早,睁眼就能够躺窝你怀抱。 鼻尖吮吸那股浅浅的恬香味道,仿佛是专属我唯一的骄傲。 记得你的好,记得你的微笑,记得你是我永远的依靠。 回忆忘不了,缘分未迟到,记得我们相遇教堂前的单行道。 无论以后幸福多么山高路遥,想念依然坚持最初的心跳。 记得你的好,记得你的微笑,记得每分钟有你呵护的美妙。 回忆忘不了,

BackgroundWorker应用实例

本文通过实例介绍BackgroundWorker组件的使用方法。使用BackgroundWorker前需要添加命名空间System.ComponentModel。本实例模拟一个耗时操作,并在操作过程中报告工作进度。这种情况使用BackgroundWorker非常合适。下面是实例程序的主画面。   下面给出程序的完整代码。 using System.ComponentModel;using