.NET多线程编码结合异步编码示例
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
1、创建一个.NET8.0控制台项目来演示多线程的应用 2、快速创建一个线程 3、多次运行程序,可以得到输出结果 这就是多线程的特点 - 当多个线程并行执行时,它们的具体执行顺序是不确定的,除非我们使用同步机制(如 lock、信号量等)来控制执行顺序。 4、新建一个类TestThread,以及一个静态的测试方法,用来做测试使用 5、在Program中,把输出改成调用TestThread类中的测试方法再次执行测试一下 6、执行以后的输出结果,如下图所示 7、Thread.Sleep(毫秒):线程的等待(睡眠) 执行结果: 8、Thread.Join() 代表线程执行完毕以后,才可以继续执行后续的代码 如下图所示,在thread线程内部执行完成以后,很快就接着执行最后的打印输出方法了 9、Thread.Join(毫秒) 代表等待当前线程执行多长时间,如果超出设定的毫秒数,就会直接执行后续的代码 运行程序,查看执行结果 1、新增Test2方法,用来测试线程池ThreadPool使用 2、WaitCallback也是一个委托,传入需要在线程池内执行的方法名称。以下代码内,“线程池”字符串为要执行方法对应的参数
3、除了直接传入回调方法,也可以直接在线程池开启的方法内,直接写代码块来当做多线程执行的部分 4、线程池内,可以通过设置Manual信号量,来识别线程池内的线程什么时候执行完成。 **1、创建一个TestAsyncAction类,添加一个模拟的异步方法TestAction 2、使用Task快读创建一个线程。最简单的方法:Task.Run(()=>{ 代码块 }) 3、两个线程并行执行,查询执行结果 4、如果想等待新开线程执行完再继续执行后续的代码,可以使用如下方式:使用 await 等待整个操作完成
执行结果: 5、也可以使用Task.Factory创建一个任务工厂来实现 6、查看执行结果 1、【异步结合多线程】如果有多个任务在执行期间,在任意一个线程执行完毕以后进行执行某种操作,可以使用 ContinueWhenAny来进行
查看执行结果: 2、【异步结合多线程】如果要等任务全部执行完毕以后才执行某个代码块,可以使用ContinueWhenAll 查看执行结果:
3、异步方法中 使用 WhenAll 和 WhenAny(这个仅模拟纯IO操作,不涉及多线程)
查看执行结果:
查看执行结果: 转自https://www.cnblogs.com/sq1201/p/18664227 该文章在 2025/1/16 11:08:48 编辑过 |
关键字查询
相关文章
正在查询... |