将变量传递给异步方法后,如何将主变量中的新实例设置变量影响异步方法?

时间:2012-09-07 05:03:28

标签: c# multithreading

例如:

void SomeMethod()
{
    MyObject o = new MyObject();
    // Do stuff with o
    SomeAsyncMethod(o);
    o = new MyObject(); // Will this affect what was passed to SomeAsyncMethod?
}

我对'o'做的任何事情在主线程和新线程中都会显而易见。但是,如果我将o设置为等于主线程中的新实例,它不应该改变SomeAsyncMethod()中的变量仍指向对象的原始实例的事实吗?

1 个答案:

答案 0 :(得分:4)

不,它对其他o没有影响。 然而

void SomeMethod()
{
    MyObject o = new MyObject();
    // Do stuff with o
    SomeAsyncMethod(o);
    o.Id = 2222; // will change objects Id property, which will 
                 // be reflected in another thread
}

原因在于您的代码中您正在更改局部变量o的值(引用),而不是对象本身