在ContinueWith()返回相关任务之前有机会调用ContinueWith()的主体吗?

问题描述 投票:0回答:1

我填充了一个同步任务列表,用于监控目的。
我想逐步从列表中删除已完成的任务。为此,我决定使用像这样的延续任务:

//remove createdTask from list on termination
Task self = null!;
OnGoingHandlers.Add(self = CreatedTask.ContinueWith(tsk => OnGoingHandlers.Remove(self)));

OnGoingHandlers.Remove
还是
self
时,还有机会叫
null
吗?

c# .net-core task task-parallel-library captured-variable
1个回答
0
投票

是的,在您的代码中,有可能以

OnGoingHandlers.Remove
self
来调用
null
。您应该在调用
self
之前分配
ContinueWith
:

Task self = CreatedTask.ContinueWith(tsk => OnGoingHandlers.Remove(tsk));
OnGoingHandlers.Add(self);
© www.soinside.com 2019 - 2024. All rights reserved.