37
|
Jérémie Bertrand Alex Kumbhani · 技术社区 · 14 年前 |
1
53
很有可能
不过,这是有道理的;如果您使用temp变量方法,您的代码将受到保护
为了解决这个问题,我有时会使用一种扩展方法:
使用该方法,可以调用如下事件:
|
2
40
由于C#6.0,您可以使用一元空条件运算符
它的线程安全,因为它只对左侧求值一次,并将其保存在临时变量中。你可以读更多 here 部分标题为空条件运算符。 更新: announcement . |
3
14
我将此片段作为设置和触发的安全多线程事件访问的参考:
|
4
13
对于.NET4.5,最好使用
本文对此进行了解释: http://msdn.microsoft.com/en-us/magazine/jj883956.aspx 主要思想是JIT编译器可以优化代码并删除局部临时变量。所以这个代码:
将编译成:
|
5
7
像这样声明事件以获得线程安全:
像这样调用它:
虽然这种方法已经不需要了。。 |
6
7
这取决于你所说的线程安全。如果你的定义只包括预防
尽管有尴尬的范围界定问题,这使你不能做一行初始化我仍然喜欢
值得注意的是,在这种特定情况下,内存障碍问题可能没有实际意义,因为变量的读取不太可能在方法调用之外解除。但是,没有任何保证,特别是当编译器决定内联该方法时。 |
7
3
实际上,第一个是线程安全的,但是第二个不是,第二个的问题是somethingochapped委托可以在null验证和调用之间更改为null。有关更完整的解释,请参阅 http://blogs.msdn.com/b/ericlippert/archive/2009/04/29/events-and-races.aspx . |
8
1
实际上,不,第二个例子不被认为是线程安全的。SomeThingOccessed事件可以在条件中计算为非null,然后在调用时为null。这是一个典型的比赛条件。 |
9
1
Jesse C. Slicer 的答案是:
用法:
代码只是在insert上进行了短暂的测试和编辑。
|
10
0
为了使这两个都是线程安全的,您假设订阅事件的所有对象也是线程安全的。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |