我正在移植一个程序,它的加载时间非常长,即使我进行了移植,也没有得到改善,因为缓慢是由于访问数据库服务器(而不是不良代码)引起的。我使用 Tasks
库将加载移动到单独的线程中,现在 UI 在加载时不会冻结,但这让我对某些事情感到好奇:
Task.Factory
对象有一个方法 StartNew
,它应该创建一个新任务,启动它并返回对它的引用。这很有道理,但似乎 Task
构造函数也做同样的事情。
当我执行以下操作时:
Task catsFromDB = new Task(() => AddCategoriesFromDB(cts.Token), cts.Token);
catsFromDB.Start();
我遇到了一个错误InvalidOperationException
,但我真的不明白。它似乎认为我已经启动了它,但事实并非如此。
[编辑]
错误信息是:"InvalidOperationException,不能在已完成任务上调用Start"
[编辑]
错误是由我包含的一些取消代码引起的。在尝试重新运行之前,我需要重置取消。