![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
牛哞哞.
成都 Ideaction unity主程
展开
-
[C#]关于处理任务中未处理的异常与AggregateException
处理任务中的异常很简单,只需要将任务的委托主体包裹到try/catch块中,但未处理的异常就麻烦了。为了处理出错的任务,一个技术是显式创建延续任务作为那个任务的"错误处理程序",如下图:检测到先驱任务引发未处理的异常,任务调度器会自动调度延续任务,但是如果没有这种处理程序,同时在出错的任务上执行Wait()或其他试图获取Result的动作,就会引发一个AggregateException。一般线程中引发未处理异常,会造成引用程序异常中止,但在任务中有所不同,在这种情况下,任务调度器会用一个"ca原创 2020-12-06 04:53:18 · 2445 阅读 · 0 评论 -
[C#]关于变量读写的原子性
假如读写变量的类型大小不超过一个本机(指针大小)整数,CLR就能保证该类型不会被部分性地读取或写入。所以,64位操作系统保证能够原子性的读写一个long(64位)。然而128位变量(decimal)的读写就不保证是原子性的。因此,通过写操作更改一个decimal变量时,可能会在仅仅复制了32位之后被打断,造成以后读取一个不正确的值,这称为一次被撕裂的读取。即在64位操作系统下,对64位以下包括64位大小的变量进行读写操作时,是原子性的,32位同理。...原创 2020-12-06 04:21:12 · 1364 阅读 · 0 评论