我填充了一个同步任务列表,用于监控目的。
我想逐步从列表中删除已完成的任务。为此,我决定使用像这样的延续任务:
//remove createdTask from list on termination
Task self = null!;
OnGoingHandlers.Add(self = CreatedTask.ContinueWith(tsk => OnGoingHandlers.Remove(self)));
当
OnGoingHandlers.Remove
还是self
时,还有机会叫null
吗?
是的,在您的代码中,有可能以
OnGoingHandlers.Remove
为 self
来调用 null
。您应该在调用 self
之前分配 ContinueWith
:
Task self = CreatedTask.ContinueWith(tsk => OnGoingHandlers.Remove(tsk));
OnGoingHandlers.Add(self);