不能在已启动的任务上调用同步运行
本文关键字:调用 同步 运行 任务 启动 不能 | 更新日期: 2023-09-27 18:33:58
我为对应用程序进行单元测试而创建的 c# 类遇到问题,特别是问题与 System.Threading.Tasks.Task 对象有关。
我有一个此类对象的列表,我想在它们上同步执行每个对象。
我称之为:
myTask.RunSynchronously();
当我这样做时,我总是收到以下错误,我不知道为什么我该如何解决它。
System.InvalidOperationException: 不能在已启动的任务上调用 RunSyncly。
有人有什么想法吗?
问题是您在调用TaskFactory.StartNew
时启动了任务 - 我的意思是,它甚至以您启动任务的方法的名称。 StartNew
创建任务,然后代表您调用Start
。=D
如果需要,您可以像 @Peter Ritchie 所说的那样Wait
任务,也可以像这样手动创建任务:
var task = new Task(() => { ... });
task.RunSynchronously();
它已经开始了,只需使用myTask.Wait()
您尝试再次运行任务,或者该任务处于正在执行或已取消的状态。查看以下部分文档:
Task.RunSyncly Method
在当前任务计划程序上同步运行任务。
无效操作异常任务未处于要启动的有效状态。它可能已启动、>执行或取消,或者可能以不支持直接计划的方式创建。
来源:Docs .NET Task.RunSyncly Method