当多个任务调用同一个委托时,如何理解源
本文关键字:何理解 任务 调用 同一个 | 更新日期: 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
更新相应Task
的needReceive
变量
如果像这里那样锁定多个任务,它们将不会同时运行
lock (lockObj) {
MdrResponseInterpreter方法的声明表明它是一个实例方法——只需使needReceive成为成员并锁定该实例即可。