C# Window编程随记——多线程和线程池
来源:互联网 发布:阿里云输入法安卓版 编辑:程序博客网 时间:2024/05/07 03:26
C# Window编程随记——多线程和线程池
在进行C#编程时,我们常常遇到一些任务量很大的情况,例如在读取多个表格的数据,并且要创建多个文件来保存解析之后的数据时,假如只是用简单的for循环来完成的话,会有明显的延迟现象,当数据量比较大时,甚至可能要等上好几分钟。为了提高任务的完成效率,我们需要适当地引入多个线程来并行地执行任务。
- 多线程的概念
- 线程池的使用
2.多线程的概念
多线程是程序设计的逻辑层概念,它是进程中并发运行的一段代码。多线程可以实现线程间的切换执行。
3.线程池的使用
一个线程池是一个可以完成一系列当前环境下任务的线程的集合,.NET Framework提供了包含ThreadPool类的System.Threading 空间,这是一个可直接访问的静态类,该类对线程池是必不可少的。
ThreadPool.SetMaxThreads 方法
public static bool SetMaxThreads( int workerThreads, int completionPortThreads)
参数:
workerThreads
类型:System.Int32
线程池中辅助线程的最大数目。
completionPortThreads
类型:System.Int32
线程池中异步 I/O 线程的最大数目。
一下方法可将任务添加进线程池:
ThreadPool.QueueUserWorkItem(new WaitCallback(方法名));
重载
ThreadPool.QueueUserWorkItem(new WaitCallback(方法名), 参数);
创建一个新的类,在里面重写一个方法,方法名可以自定义,但是返回值必须为void,而且传入形参必须是一个object类型的,这是线程池回调方法的一个规定:
public class thr{ /// <summary> /// 解析和生成文件 /// </summary> /// <returns></returns> public void AnalyseAndBuildFiles(Object data) { //根据具体需求将参数object转换为指定类型 string config_strs = data as string; }}
创建完这个类之后,接下来我们就要看看怎么在我们的业务中来使用线程池了,方法很简单:创建一个类的实体,然后调用实体的方法作为线程池的回调方法即可,QueueUserWorkItem方法的第二个参数,就是传递给回调函数的object类型的参数:
thr t = new thr();ThreadPool.QueueUserWorkItem(new WaitCallback(t.AnalyseAndBuildFiles), excel_config_list[i]);
0 0
- C# Window编程随记——多线程和线程池
- C# Window编程随记——新建一个window项目
- C# Window编程随记——读取.txt文件内容
- C# Window编程随记——ClickOnce程序部署
- C# Window编程随记——运行时动态对象创建和动态方法调用
- C# Window编程随记——C#反射技术的简单操作(读取和设置类的属性)
- c#多线程:线程池和异步编程
- c#多线程:线程池和异步编程
- c#多线程:线程池和异步编程
- C# Window编程随记——使用拖拽方式搭建UI
- C# Window编程随记——按钮点击事件及弹出选择路径框
- C# Window编程随记——两个常用的写文件的方法
- C# Window编程随记——ClickOnce程序部署(2):自动更新
- C# Window编程随记——ClickOnce程序部署(3):使用证书
- c#多线程教学(4):线程池和异步编程
- c#多线程教学(4):线程池和异步编程
- c#多线程教学(4):线程池和异步编程
- c#多线程教学(4):线程池和异步编程
- PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载
- java中冒泡排序与选择排序
- iOS App Store 审核加速(插队)12小时100%成功!APP加速审核!
- arm mmu page
- 【培训笔记】MP Review工具
- C# Window编程随记——多线程和线程池
- The Fine Print
- 35.First Bad Version
- 通过Oracle来辅助MySQL数据问题的恢复
- 分享嵌入式开发前景总结
- OS X中应用的生命周期
- Git学习
- 图片保存到nginx centos6.5服务器失败 解决办法
- 在Ubutu下安装Pycharm