我想在我的类中实现一个模板方法,因此我有一个带有受保护成员的抽象基类。 在具体类中,我想在另一个线程调用的方法中使用这个成员。
现在我的问题是 - 这样安全吗?
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()中创建服务类型? 它只是一个处理数据库操作的服务类。
答案 0 :(得分:0)
每个应用程序都有自己的“安全”定义,特别是在线程安全方面。 (例如Console
是线程安全的,但您可以在一个线程上更改Console.OutputEncoding
并影响另一个线程如何输出文本 - 这对于特定应用程序可能不是“安全”。你的代码是“安全的”,因为service
不能被任何其他线程破坏 - 它将始终具有“有效”值(所有object
赋值在.NET中是原子的),但它可能会在调用InvokeAsync
和调用Method
之间发生变化 - 对于应用程序而言可能不是“安全”。