我可以通过引用传递锁定对象吗?

时间:2012-08-30 03:27:10

标签: c# asynchronous recursion locking

我有一个递归函数,可以生成几个异步任务。每个任务都会更新一个公共字典对象。

我可以与其他线程共享锁对象作为函数中的参数吗?

public class RecursiveTest
{ 

   void DoRecursiveWork(ref object myDictLock, dictionary<string,string> myDict)
   {
    // yadda.. async code that calls DoRecursiveWork()

   }

}

1 个答案:

答案 0 :(得分:3)

假设你打算做这样的事情

// do something
lock (myDictLock) {
    // access the dictionary
}
// do something else

您可以“通过引用”或“值”传递您的对象(即,通过引用引用或引用的值,因为object是引用类型)。在这两种情况下,锁定对象都将起作用。当你通过引用传递时,你也可以分配在递归链顶部传递的变量,尽管我怀疑这是你打算做的。