winform程序中,用了多个backgroundworker,是不是不应该反复的销毁或者创建这种组件的对象

黎大 2018-02-14 12:33:31
如题所示。

在我的mainform中,用到了多个backgroundworker来定期操作大量文件。

这些background worker是在formload的时候初始化好,还是在定期执行的后台函数里再初始化好呢?

假如在数据定时处理方法中再初始化这些backgroundworker,每一次用大量backgroundworker处理完数据后,有没有必要把这些backgroundworker对象清理掉呢?

如果在formload中初始化全局的backgroundworker,在多次长期处理数据后,这些backgroundworker会不会累了,变慢了呢?

多谢。

-------------------------------------------------------------------------------------

以上是华丽的分割线。

再提个问题。假如我有多个目录(200+)的大量数据要处理,我是应该用200个backgroundworker处理,还是每次用5个backgroundworker来处理的策略更合理呢?
多谢
...全文
1622 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
黎大 2018-04-18
  • 打赏
  • 举报
回复
引用 8 楼 sp1234 的回复:
你可以学习 c# 现在的 async/await 异步方法编程语法,写异步代码比较简单,几秒的事情(当然前提是你清楚异步操作),不用组件。组件麻烦。
组件有什么不好的吗! 与界面交互起来明显很方便啊!
xian_wwq 2018-03-22
  • 打赏
  • 举报
回复
个人理解backgroundworker本质还是用户线程 如果线程的操作很快结束,不是长期运行, 推荐使用线程池 如果线程与UI需要交互,使用匿名委托
  • 打赏
  • 举报
回复
你可以学习 c# 现在的 async/await 异步方法编程语法,写异步代码比较简单,几秒的事情(当然前提是你清楚异步操作),不用组件。组件麻烦。
luofuxian 2018-03-22
  • 打赏
  • 举报
回复
task 异步 同步,无关winform,都可以使用的。
cyg17173 2018-03-22
  • 打赏
  • 举报
回复
引用 5 楼 peterlee1983 的回复:
[quote=引用 2 楼 sp1234 的回复:] 使用 .net 中那么多种强大的异步多线程处理的语法形式,确实是看不出需要 backgroundworker 组件的必要了。
winform程序,请先看好前提 这个时候和界面有交互的[/quote] task 异步 同步,无关winform,都可以使用的。
黎大 2018-03-21
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
使用 .net 中那么多种强大的异步多线程处理的语法形式,确实是看不出需要 backgroundworker 组件的必要了。
winform程序,请先看好前提 这个时候和界面有交互的
58662877 2018-02-14
  • 打赏
  • 举报
回复
纯粹后台操作用不上BackgroundWorker吧,除非想要和界面实时交互。
  • 打赏
  • 举报
回复
使用 .net 中那么多种强大的异步多线程处理的语法形式,确实是看不出需要 backgroundworker 组件的必要了。
土豆赛叩 2018-02-14
  • 打赏
  • 举报
回复
如果你是定时执行的 你可以使用线程池。 不用担心释放 前提是你得保证你的线程能跑完不会卡死。并不是线程并不是越多 处理数据越快 线程切换是需要很大开销的 要合理利用线程数量!
黎大 2018-02-14
  • 打赏
  • 举报
回复
引用 3 楼 u012315837 的回复:
纯粹后台操作用不上BackgroundWorker吧,除非想要和界面实时交互。
哦,是的,发现了,不是这个backgroundworker的问题,是server2008种,cdo组件挖出来的一个坑。。。 哎。。。即便是放在后台线程也会,直接会导致 appcrash。。。无语。。。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧