C#并行任务库:是否可以始终依靠task.ContinueWith()延续来进行调用?

时间:2019-01-10 05:37:05

标签: c# task task-parallel-library

我创建一个任务,该任务在DI解决的服务实例上调用方法:

   using(var scope = container.BeginLifetimeScope())
   {
       var serviceInstance = scope.Resolve<IService>(serviceType);

       return Task.Factory.StartNew(serviceInstance.DoTheWork());
   }

这当然是不好的:一旦离开了using块,所有创建在示波器上的依赖项都将被丢弃-对“ DoTheWork()”的调用尚未完成,仍在使用注入的资源

这不是我想要的。我现在的解决方案是:

   var scope = container.BeginLifetimeScope();
   var serviceInstance = scope.Resolve<IService>(serviceType);

   var task = Task.Factory.StartNew(serviceInstance.DoTheWork());

   task.ContinueWith(t => { scope.Dispose(); });

问题是:这样安全吗?还是在某些情况下出于某种原因根本没有要求延续?

0 个答案:

没有答案
相关问题