如果我有类似的代码:
public static void Main()
{
Task.Factory.StartNew(() => {
while (true)
{
DoSomethingVeryImportant();
Thread.Sleep(500);
}
}, TaskCreationOptions.LongRunning);
Console.WriteLine("Started.");
Console.ReadLine();
Console.WriteLine("Closing.");
}
是否有可能最终确定此任务,因为没有引用它?
var task = Task.Factory.StartNew(...
会解决问题吗?
我理解在这种特定情况下最好使用本地task
变量CancellationToken
,取消任务并等待它结束,但现在我对另一件事感到好奇 - GC对未引用Task
的行为。