如何删除在Task.Factory.StartNew上创建的任务

时间:2014-03-18 16:00:34

标签: c# .net task

我使用以下代码创建任务。

但似乎应用程序关闭时,Task仍在内存中......

如何正确删除在Task.Factory.StartNew上创建的任务?

谢谢!

class Service()

 Task job;

void DoJob()
{

job = (Task.Factory.StartNew(() =>
                  {

                      try
                      {


                      }
                      catch (Exception ex)
                      {

                      }


                  }, TaskCreationOptions.AttachedToParent));
            }

3 个答案:

答案 0 :(得分:3)

当进程退出操作系统时,释放该进程持有的所有资源。释放所有内存。这种清理程序非常可靠。您可以假设您的任务所占用的内存已正确清理。

你看到了什么 - 你误解了它。

答案 1 :(得分:1)

默认情况下,Task作为后台线程运行,这意味着您的Task应该在应用程序退出时消失。

答案 2 :(得分:0)

任务包含一个IDisposable的WaitHandle。因此,任务也是IDisposable,如果你不再需要它,需要处理。

但是,只有在直接访问Task的WaitHandle(.NET 4.5)时才需要Dispose the Task。在.NET 4.0之前,当您直接调用Waitx()方法之一或句柄时,必须调用dispose。

但是当对象从内存中清除时,IDisposable没有影响。这是垃圾收集的工作,让garbabe收集他的工作。