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