【发布时间】:2014-11-11 09:26:21
【问题描述】:
我的应用程序允许用户从 UI 创建“任务”对象并设置它们的执行顺序。从那里,当用户单击“运行”时,所有任务(按顺序)都被发送到一个假设链接并运行它们的类。类如下:
public class MaintenanceTask
{
private CancellationTokenSource m_CancellationTokenSource;
private Task m_BatchTask;
public MaintenanceTask()
{
m_CancellationTokenSource = new CancellationTokenSource();
}
public void AddTaskIdent(TaskIdentBase ident)
{
Task newTask = ident.Create(m_CancellationTokenSource.Token);
if (m_BatchTask == null)
m_BatchTask = newTask;
else
m_BatchTask.ContinueWith(prev=>newTask);
}
public void Run()
{
if (m_BatchTask != null)
m_BatchTask.Start();
}
}
AddTaskIdent 正在接收一个知道如何创建任务对象的基类。 我的问题是调用 Run() 启动发送给班级的第一个任务。它运行它,直到它运行后没有其他任务完成。 它只是在第一个任务完成后停止。
我是否缺少 ContinueWith 机制的内容?
【问题讨论】:
-
什么是
TaskIdentBase? -
只是我系统中的一个类,它知道什么以及如何创建不同的任务。它的 Create() 返回想要的 Task 对象。
-
是的...实现很重要...但是我认为您没有正确使用
Task...
标签: c# .net multithreading asynchronous