不能在已启动的任务上调用同步运行

本文关键字:调用 同步 运行 任务 启动 不能 | 更新日期: 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