我目前正在升级一些现有的代码,以供Windows Universal使用,并且正在尝试将一个命令模式转换为与新的async/await功能配合使用。
我有一个命令调度程序类,它在自己的线程中运行并处理已添加到其队列中的命令。涉及到的方法如下:
private List<ICommandItem> _items;
private void ProcessCommands()
{
while(_items.count > 0)
{
_items[0].Execute();
_items.RemoveAt(0);
}
}
我的问题是,我的一些ICommandItem.Execute()方法现在需要异步执行,因为它们涉及文件I / O,而其他方法则没有异步方法。我该如何修改上述模式,使得:
- 我的执行器可以处理异步和非异步的ICommandItems
- 仅在前一个命令完成后,执行器才开始执行命令。