我有一个递归函数,可以生成几个异步任务。每个任务都会更新一个公共字典对象。
我可以与其他线程共享锁对象作为函数中的参数吗?
public class RecursiveTest
{
void DoRecursiveWork(ref object myDictLock, dictionary<string,string> myDict)
{
// yadda.. async code that calls DoRecursiveWork()
}
}
答案 0 :(得分:3)
假设你打算做这样的事情
// do something
lock (myDictLock) {
// access the dictionary
}
// do something else
您可以“通过引用”或“值”传递您的对象(即,通过引用引用或引用的值,因为object
是引用类型)。在这两种情况下,锁定对象都将起作用。当你通过引用传递时,你也可以分配在递归链顶部传递的变量,尽管我怀疑这是你打算做的。