摘要: 前言 在线程执行的地方使用try..catch..捕获不到异常 首先,线程内部不应该出现异常,所以首选处理方式是在Task中使用try..catch..把异常处理掉 Task中可能会抛出多个异常,应该使用AggregateException捕获多线程中所有异常。AggregateException是 阅读全文
posted @ 2019-12-08 20:09 .Neterr 阅读(1370) 评论(0) 推荐(0) 编辑
摘要: 简介 TaskCompletionSource生成Task的另一种方法.使用TaskCompletionSource很简单,只需要实例化它即可。TaskCompletionSource有一个Task属性,你可以对该属性暴露的task做操作,比如让它wait或者ContinueWith等操作。当然,这 阅读全文
posted @ 2019-12-08 19:30 .Neterr 阅读(3292) 评论(1) 推荐(0) 编辑
摘要: 简介 Task(任务)可以解决多线程编程中的复杂性。 多线程编程的复杂性 传递数据和返回结果 传递数据倒是没啥问题,只是难以获取到线程的返回值,处理线程的异常也需要技巧。 监控线程的状态 新建新的线程后,如果需要确定新线程在何时完成,需要自旋或阻塞等方式等待。 线程安全 设计时要考虑如果避免死锁、合 阅读全文
posted @ 2019-12-08 18:01 .Neterr 阅读(2402) 评论(0) 推荐(0) 编辑
摘要: 概念 信号 有时候你需要让线程处于等待状态,直到接收其他线程发来的消息,这就叫发送信号(signaling) 最简单的发送信号的方式就是使用ManualResetEvent。调用它的WaitOne()方法阻塞线程,调用Set()方法开启信号 临界区 一段代码内如果存在对共享资源的多线程读写操作,那么 阅读全文
posted @ 2019-12-08 16:41 .Neterr 阅读(1202) 评论(0) 推荐(0) 编辑