System.Task立即失败,出现NullReferenceException。 Windows Server 2003服务

时间:2014-08-08 00:41:05

标签: c# .net task nullreferenceexception

(编辑)我不知道NullReferenceException是什么。这不是重复的。问题出在System.Task ......


我在Server 2003 SP2上运行的Windows服务已经运行了一年多。该服务只运行一个计时器,并在一天内启动各种任务。其中一些任务是长时间运行的进程,因此该服务使用System.Task来启动长时间运行的任务,以便它们不会阻止主计时器线程。现在,一些任务在启动后立即失败。所有任务在VS2013 IDE中启动并正常运行,但在服务器中部署时失败。

这是在运行异步任务时遇到的Windows服务计时器已用方法的代码:

if (!IsTaskRunning(processConfig.Name)) {   _log.Write("Executing process " + processConfig.Name + "(" + occurance.Name + ") asyncronously.");
        AsyncTask task = new AsyncTask(processConfig, occurance, Task<ProcessResult>.Factory.StartNew(() => process.Run()), processConfig.Name);
        _asyncTasks.Add(task); }

AsyncTask对象是我自己的创建,它只包含System.Task对象,以及完成时报告任务状态所需的一些其他信息。任务在创建后立即失败(它立即开始执行)。这是异常和堆栈跟踪:

  

System.AggregateException:发生了一个或多个错误。 ---&GT;   System.NullReferenceException:未将对象引用设置为实例   一个对象。在   OnePoint.Automation.ServiceBase&LT;&GT; c__DisplayClass6.b__3()   在System.Threading.Tasks.Task 1.InvokeFuture(Object futureAsObj)
at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.Execute() --- End of inner exception stack trace --- ---> (Inner Exception #0) System.NullReferenceException: Object reference not set to an instance of an object. at OnePoint.Automation.ServiceBase.<>c__DisplayClass6.<CheckForTasksToRun>b__3() at System.Threading.Tasks.Task
1.InvokeFuture(Object futureAsObj)
  在System.Threading.Tasks.Task.InnerInvoke()at   System.Threading.Tasks.Task.Execute()&LT; ---

我尝试了其他启动任务的方法,即。实例化任务和AsyncTask对象,然后调用Task.Start(),但行为是相同的。我甚至将日志记录放在实际的process.Run()方法中,以查看是否已达到代码,但事实并非如此。

任何提示/帮助将不胜感激。这个问题已经浪费了我很多时间。

0 个答案:

没有答案