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

goo*_*ate 4 c# recursion asynchronous locking

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

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

public class RecursiveTest
{ 

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

   }

}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

假设你打算做这样的事情

// do something
lock (myDictLock) {
    // access the dictionary
}
// do something else
Run Code Online (Sandbox Code Playgroud)

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