C# 当多个任务调用同一个委托时,如何理解源?

C# 当多个任务调用同一个委托时,如何理解源?,c#,C#,我有这样的代码: public void RangeMissing(/*params*/) { Task.Factory.StartNew(() => { .... bool needReceive = true; while (needReceive) { .... lock (lockObj) { .... // c

我有这样的代码:

public void RangeMissing(/*params*/)
{
    Task.Factory.StartNew(() =>
    {
        ....
        bool needReceive = true;
        while (needReceive) {
            ....
            lock (lockObj) {
               ....
               // calling third party dll method that calls MdrResponseInterpreter in its turn
            }
        }
    }
}

public bool MdrResponseInterpreter(DNMessageDeliverer builder, DNFieldSet message)
{
    .....
    // i need to update needReceive here
    needReceive = false;
}

多个任务可能同时执行。我需要从
MdrResponseInterpreter
更新
needReceive
相应的
任务的
变量,如果您像此处一样锁定多个任务,则它们不会同时运行

lock (lockObj) {

MdrResponseInterpreter方法的声明表明它是一个实例方法—只需使needReceive成为一个成员并锁定该实例。

我希望同时运行多个任务。我只锁定整个任务的一小部分。好的,因此,只需将needReceive放在具有MdrResponseInterpreter方法的对象上,然后DNMessageDeliver具有MdrResponseInterpreter方法,但我在多个任务中使用一个DNMessageDeliver,因此这将不起作用,因为当我在一个任务中将
needReceive
设置为true时,我将更新其他任务。。。但是,如果我将在“lock(lockObj)”中,这应该会起作用,我只需要将
needReceive
dnmessagedeliver
复制到外部类……但是我不确定这是否是一个很好的方法