zoukankan      html  css  js  c++  java
  • (转).NET 4.5中使用Task.Run和Parallel.For()实现的C# Winform多线程任务及跨线程更新UI控件综合实例

    http://2sharings.com/2014/net-4-5-task-run-parallel-for-winform-cross-multiple-threads-update-ui-demo

     

    在C# WINFORM的开发中,难免会遇到多线程的开发以提高程序的执行效率。自己刚才开始在做多线程的开发时也遇到了很多这方面的问题,比如:如何使用并实现多线程功能、跨线程更新UI控件等问题。还记得最初使用的是System.Threading命名空间下的Thread类来实现的:

    功能实现上是没有什么问题的,但总觉得使用上不是很方便,于是使用了.NET Framework 4+版本中提供的Parallel在实现多线程的程序功能开发。再结合.NET4.5版本中的Task.Run()的ContinueWith()方法来实现相对更高级的循环任务的多线程任务。

    具体的应用场景为:有一个数据量比较大(几百万)的表,需要将这个表中的每条记录取出来用程序进行处理,然后再更新到表中去。目前单线程的处理程序已实现,这时为了达到快速处理数据的目的,我们就需要使用多线程来批量处理这些数据了。但批量处理时我们又不能一次性把表中的所有数据都读出来。所以,我们需要将数据分批少量地取出来,再处理,然后更新回去。

    按照以上的应用场景,我做了一个模拟的小实例,实现代码:

    程序运行效果图:

    cross-thread-update-ui

    当然,以上只是个模拟程序,具体的业务和异常等等问题都未考虑太多,只是提供一个解决方案的思路。如果你觉得有什么不妥或者错误,或者是更好的解决方案,欢迎联系反馈。

  • 相关阅读:
    Java线程面试题 Top 50 (转载)
    Java并发编程:volatile关键字解析
    转:【创龙TMS320C6748开发板试用】相关软件的安装与基本设置+CCS安装失败分析
    Linux格式化分区报错Could not start /dev/sda No such file or directory 解决办法
    转:用 git 下载 uboot 源码
    转:堆(heap)和栈(stack)有什么区别??
    转:数字信号处理的学习资源
    转:VC中WORD,DWORD,unsigned long,unsigned short的区别(转)
    转:ASCII码表_全_完整版
    转:CFile::Seek
  • 原文地址:https://www.cnblogs.com/qianblue/p/4932548.html
Copyright © 2011-2022 走看看