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

本文关键字:何理解 任务 调用 同一个 | 更新日期: 2023-09-27 18:29:11

我有这样的代码:

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 更新相应TaskneedReceive变量

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

如果像这里那样锁定多个任务,它们将不会同时运行

lock (lockObj) {

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