2

我有一个产生几个异步任务的递归函数。每个任务更新一个公共字典对象。

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

public class RecursiveTest
{ 

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

   }

}
4

1 回答 1

5

假设你打算做这样的事情

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

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

于 2012-08-30T03:32:33.563 回答