Bulson Asked:2020-12-13 00:16:46 +0000 UTC2020-12-13 00:16:46 +0000 UTC 2020-12-13 00:16:46 +0000 UTC 锁定并尝试捕获 772 当一个操作同时需要两者时如何正确编写? try { lock(locker) { .... } } catch(...) { ... } 或者 lock(locker) { try { ... } catch(...) { ... } } 以及如果发生异常会被锁住怎么办? c# 1 个回答 Voted Best Answer Bulson 2020-12-13T02:22:13Z2020-12-13T02:22:13Z 在SO 上,强烈建议不要 lock 使用 try-catch. 他们建议您这样做: lock(whatever) { try { MakeAMess(); } finally { CleanItUp(); // Либо доводим операцию до конца, либо откатываем в прежнее состояние } } 他们在那里写道,抛出异常lock违反了这个异常存在的本质lock。因此,如果发生异常,有两种选择: 完全杀死进程Environment.FailFast() 或者,如果可能,回滚到以前的状态,即lock. 原文可以在这里找到。
在SO 上,强烈建议不要
lock
使用try-catch
. 他们建议您这样做:他们在那里写道,抛出异常
lock
违反了这个异常存在的本质lock
。因此,如果发生异常,有两种选择:Environment.FailFast()
lock
.原文可以在这里找到。