1
在我們的應用程序中,我們使用TPL創建任務,只要我們想要進行服務調用即可。我們有一個忙指示符,當任務啓動時設置爲true並在任務完成或發生故障時清除。有沒有辦法以通用方式完成此任務,而不是爲每個創建的任務執行此操作?集中處理TPL創建的新任務前後的操作
一審:
ComponentViewModel.Instance.IsApplicationBusy = true;
ComponentViewModel.Instance.BusyMessage = "Loading...";
var task1 = Task.Factory.StartNew(() => DoTask1());
task1.ContinueWith(antecdent =>
{
ComponentViewModel.Instance.IsApplicationBusy = false;
CustomAction1();
}
二審:
ComponentViewModel.Instance.IsApplicationBusy = true;
ComponentViewModel.Instance.BusyMessage = "Loading...";
var task2 = Task.Factory.StartNew(() => DoTask2());
task2.ContinueWith(antecdent =>
{
ComponentViewModel.Instance.IsApplicationBusy = false;
CustomAction2();
}
相同的邏輯,重複全部通過應用程序只要服務調用時,有沒有辦法避免這種重複?
例如,有一個dragstarted和dragcompleted事件會被所有拖動操作觸發,所以可能通過擴展任務工廠或其他方式來完成taskstarted和taskcompleted事件?
編輯:做出改變,這樣的問題更加clear.You現在可以觀察到,開始和結束任務之前的步驟是一樣的,但不同的功能需要當它運行到完成
嗨,對不起我的問題沒有得到clear.I已編輯question.I想不同任務完成後要執行的函數 –
@VasudevanKannan,然後將其作爲另一個委託參數傳遞給函數,並在繼續中調用它。 – svick
@robrich,你的意思是'Task.Factory.StartNew(ThingToDo)'?另外,.Net中通常的命名約定是以小寫字母開始參數。 – svick