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