1

我想在我的类中实现一个模板方法,因此我有一个带有受保护成员的抽象基类。在具体类中,我想在另一个线程调用的方法中使用这个成员。

现在我的问题是 - 这安全吗?

public abstract class ClassBase
{
    protected IService service = new Service();

    protected internal abstract Method();
}


public sealed class Class : ClassBase
{
    public void RunAsync()
    {
       InvokeAsync(Method); //Just a sample - runs asyncrounus
    }

    protected internal override Method()
    {
       var v = this.service.GetById(125);
       ...
    }
}

或者我是否必须在继承类的 Method() 中创建服务类型?它只是一个处理数据库操作的服务类。

4

1 回答 1

0

每个应用程序都有自己的“安全”定义,尤其是在线程安全方面。(例如Console是线程安全的,但您可以Console.OutputEncoding在一个线程上进行更改并影响另一个线程输出文本的方式——这对于特定应用程序可能不是“安全的”)。您的代码是“安全的”,因为service它不会被任何其他线程破坏——它总是有一个“有效”的值(所有object分配在 .NET 中都是原子的),但它可以在何时InvokeAsync被调用和何时发生变化Method被调用——这对应用程序来说可能不是“安全的”。

于 2013-03-12T16:20:42.017 回答