在我们的应用程序中,每当我们想要进行服务调用时,我们都会使用 TPL 创建任务。我们有一个忙碌指示符,每当任务启动时设置为 true,并且在任务完成或出现故障时清除。有什么方法可以以通用方式完成此操作,而不是为创建的每个任务执行此操作?
第一个例子 :
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 事件吗?
编辑:进行了更改以使问题更加清晰。您现在可以观察到开始和结束任务之前的步骤是相同的,但是当每个任务运行完成时需要为每个任务执行不同的功能