【发布时间】:2016-10-12 09:16:20
【问题描述】:
在我的程序中,我有大约 40 个正在运行的任务,定义如下:
private void StartTryReconnectTask() {
TryReconnectCTKS = new CancellationTokenSource();
TryReconnectTask = new Task(this.TryReconnect, TryReconnectCTKS.Token);
TryReconnectTask.Start();
}
在 TryReconnect() 内部有一个无限循环,只有在任务被取消时才会停止。在我看来一切都很好。
然后我需要在单击按钮时启动一个任务(不是无限的):
private void ExecuteRepairCommand(object o) {
Task.Run(() => {
...
});
}
开始这项新任务大约需要 30/40 秒。 如果我使用线程一切正常,线程会立即启动。为什么?是什么原因?
【问题讨论】:
-
我认为它可能是异步的东西或缺少它们的东西,我认为它不会在 30-40 秒后开始,那是它完成的时候。也许尝试使 ExecuteRepairCommand 异步,然后等待任务。
-
创建任务时使用
TaskCreationOptions.LongRunning标志。 -
@SriramSakthivel 哇,谢谢!你能把答案贴出来让我把它标记为正确吗?
标签: c# wpf multithreading performance task