同步不一致

时间:2016-07-20 10:09:15

标签: c# synchronization resharper

abstract class的公共方法以锁定静态对象开始。调用了几个小的私有函数,其中一些函数使用成员变量(并且该成员变量仅用于这些私有函数,而不是其他任何函数)。像

这样的东西
private SomeType _SomeMember;
private static readonly object TheLock = new object();
public void DoSomething()
{
    lock(TheLock)
    {
        Step1();
        ...
        Step5();
        ...
        Step9();
}
private void Step5()
{
    ...
    _SomeMember.Blah();
    ...
}

现在我不得不在许多派生类中重写Step5()。还意味着我必须将签名更改为protected virtual。 现在ReSharper(版本10.0.2)开始抱怨同步不一致,正是我在基类_SomeMember中使用Step5()的地方(在派生类中,Step5()为空):< / p>

ReSharper:
The field is sometimes used inside synchronized block and sometimes used without synchronization

我还注意到,当我创建功能protected(没有virtual),internalpublic时会出现警告。

由于Step5()仅从DoSomething()调用,因此它看起来像是一个错误的警告。 或者我没有看到同步上下文丢失的位置?

0 个答案:

没有答案