C#访问方法并发
我想了解将一个对象传递给多个类的并发性是否存在一些问题。范例C#访问方法并发,c#,.net-core,concurrency,C#,.net Core,Concurrency,我想了解将一个对象传递给多个类的并发性是否存在一些问题。范例 class A: interfaceA{ private object attribute; public A () { } public bool doSomething(){ Console.writeline("Happy new year :)"); // other non static operations } } cl
class A: interfaceA{
private object attribute;
public A ()
{
}
public bool doSomething(){
Console.writeline("Happy new year :)");
// other non static operations
}
}
class B: interfaceB{
private InterfaceA classA;
public B(interfaceA classA){
this.classA = classA;
}
public bool elaborate(){
return classA.doSomething();
}
}
class C: interfaceC{
private InterfaceA classA;
public C(interfaceA classA){
this.classA = classA;
}
public bool elaborate(){
return classA.doSomething();
}
}
public void Main(){
classA A = new classA();
classB B = new classB(A);
classC C = new classC(A);
}
这是一个普通的例子,只是给你一个想法。
谢谢大家:)在编写多线程代码时,您应该注意潜在的危险。如果不是,则不要编写多线程代码 作为.Net framework中的一般经验法则,静态方法应该是线程安全的,但实例方法不是,除非注释中另有规定。您的代码恰好只调用静态的线程安全方法。但是,如果对代码进行任何更改,可能会使代码成为非线程安全的
有大量的资源描述潜在的问题,远远超过了这里所能描述的。例如,对于您共享的特定代码或,不会有任何问题。因为您不同时修改和/或读取数据,所以没有问题。上面的两个注释都基于这样一个事实,即您的
interfaceA.doSomething()
所做的一切都是Console.WriteLine(“静态字符串”)代码>这是线程安全的。这个问题的答案很大程度上取决于interfaceA.sososomething()
做了什么请将示例代码修改为有效的C代码。接口名称不能以#
(CS1040)开头。在您的示例中,哈希符号(#)的含义是什么?