【发布时间】:2019-04-21 14:34:33
【问题描述】:
我正在使用WPF 和C# 开发应用程序。
我有以下代码:
var tokenSource = new CancellationTokenSource();
CancellationToken token = tokenSource.Token;
Task task = Task.Factory.StartNew(() =>
{
// Some action that returns a boolean - **CODE_A**
}).ContinueWith((task2) =>
{
result= task2.Result;
if (!result)
{
//Another action **CODE_B**
}
});
}, token);
通常CODE_A会立即开始运行,不到一秒后,CODE_B开始执行。
但是,有时使用Task.Factory.StartNew 创建的任务需要超过 5 秒才能开始(一旦开始,执行速度和往常一样快)。
我不明白为什么任务开始运行需要这么长时间?我可以以某种方式影响任务优先级,因此它会在所有情况下立即开始运行吗?我猜(这只是一个假设)任务是由任务调度程序安排的,以便稍后执行?有没有办法让我一直强制任务立即运行?
【问题讨论】:
-
所以如果我运行这个例子,我应该看到你的问题?如果不是(我确定我不会),这意味着您缺少相关信息,这个控制台、应用程序、服务器应用程序是什么,是否有很多任务正在发生,等等
-
如果你的代码中有一个非常具体的部分(不是全部)你想提示你不喜欢它延迟,然后考虑使用
LongRunning。这有点滥用,但它可能会起作用。 docs.microsoft.com/en-us/dotnet/api/…
标签: c# asynchronous task taskfactory continuewith