我目前正在升級一些現有的代碼供Windows通用,我正在努力轉換命令模式以使用新的異步/等待功能。如何實現命令模式與異步/等待
我有一個命令調度程序類,它在自己的線程中運行並處理已添加到其隊列中的命令。問題的方法是這樣的:
private List<ICommandItem> _items;
private void ProcessCommands()
{
while(_items.count > 0)
{
_items[0].Execute();
_items.RemoveAt(0);
}
}
我的問題是,我的一些ICommandItem.Execute的()方法,現在需要異步,因爲它們涉及文件IO,而其他沒有異步方法。我怎麼能修改上面的圖案,使得:
- 我的遺囑執行人可以處理異步和非異步ICommandItems
- 執行人只有當先前的命令已經完成啓動命令的執行。
我很樂意只是同步執行這些方法,但現在會導致無處不在的死鎖。
的問題,這是返回類型兩者的Execute方法是不同的(一個返回的任務)。我想我可以從一個共同的父界面派生IAsyncCommandItem和ICommandItem,但我希望有一個更優雅的解決方案。 –
@DazEddy - 都返回相同的東西。 await會將任務轉換爲實際返回的項目。 –