Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我是否以某种方式删除了这个任务或者它是自毁的?
Task.Factory.StartNew(() => { DoSomeJob(); }, TaskCreationOptions.LongRunning);
或者最好像这样使用它
var t = Task.Factory.StartNew(() => { DoSomeJob(); }, TaskCreationOptions.LongRunning);
并以某种方式稍后删除/取消t?
谢谢!
你不需要删除它,它最终会被处理掉......
如果你的意思是你可以取消它,或者中止它,或者以其他方式在它完成之前阻止它运行;不,不是真的(现在是这样)。您需要创建一个取消令牌源,将令牌传递给任务,然后任务中运行的方法需要定期检查以确保它没有被取消。
您可以做的是等待一段时间并取消该等待操作。这将允许您继续运行您需要运行的“下一个”任务。请注意,如果您这样做了,而没有添加我上面讨论的任务本身检查删除的工作,那么该方法仍将运行到完成,您只需提前停止等待。
相关链接
如果您只是担心清理任务运行后使用的资源,则无需担心。这一切都会自动处理。
如果您想尝试自己处理它,则必须小心。如果它仍然处于运行状态,你会得到这个异常:
A task may only be disposed if it is in a completion state (RanToCompletion, Faulted or Canceled)
所以最好使用你的第一个例子。
垃圾收集将为您处理清理工作,您不必保留参考t。
t