Cri*_*ole 3 .net c# task-parallel-library
我正在移植一个具有非常长的加载时间的程序,当我移植它时根本没有改进,因为缓慢是因为访问数据库服务器(而不是次优代码).我已经将加载移动到与Tasks库的单独线程上,现在UI在加载时不会冻结,但它确实让我对某些东西感到好奇:
该Task.Factory对象有一个方法StartNew,该方法应该创建一个新任务,启动它并返回对它的引用.这是有道理的,但似乎Task构造函数完全相同.
当我执行以下操作时:
Task catsFromDB = new Task(() => AddCategoriesFromDB(cts.Token), cts.Token);
catsFromDB.Start();
Run Code Online (Sandbox Code Playgroud)
我得到一个InvalidOperationException我真的不明白的错误.它似乎相信我已经把它踢掉了.我还没有.
[编辑]
erorr是:"InvalidOperationException,可能无法在已完成的任务上调用Start"
[编辑]
错误是我包含的一些取消代码.我需要在尝试再次运行之前重置取消.
现在我觉得很愚蠢,但让其他人从我的"绿色"(如"新","没经验")错误中学习将是有益的:
我需要有问题的操作可以取消和重新运行,所以我实现了一个"CancelLoad"操作,它总是在进行实际加载之前运行.事实证明,我忘了在取消和等待后创建一个新的令牌.