方法的本地 C# 锁?

Local C# lock for a method?

我看到的关于 C# lock 的所有 tutorials/示例都使用 class 成员变量进行锁定。

我不想使用 class 成员变量,而是想使用局部变量来锁定代码特定部分的执行。

我的示例代码:

class TestClass
{
    public static int TestMethod()
    {
        // some code
        
        foreach (var example in Examples)
        {
            //some code...
            
            object myLock = new object(); // QUESTION: Is this valid?
            Parallel.ForEach(AllChunks, (chunk) =>
            {
                // some code...
                
                lock(myLock)
                {
                    // do some GPU related activities
                }
            }
        }
        
        return 0;
    }
}

在上面的代码中,我使用 myLockTestMethod() 中的局部变量)来锁定代码特定部分的执行。

问题:此实现是否有效且正确?我的锁不是 readonly(如教程中所建议)。

是的,非常好。

(很抱歉这个回答很短,但真的没什么好说的)