目前我的代码变得非常重复。我必须在整个软件中反复提高繁忙指标。
这三个动作是
1. Raise Busy Indicator
2. Do the actions
3. Turn Off Busy Indicator
实施例
public async void OpenAttachment()
{
Events.PublishOnUIThread(new BusyEvent { IsBusy = true });
await Task.Run(() =>
{
try
{
if (SelectedAttachment == null)
{
return;
}
var tempFile = string.Format(
"{0}\\{1}.{2}", Path.GetTempPath(), SelectedAttachment.FileName, SelectedAttachment.FileExtension);
System.IO.File.WriteAllBytes(tempFile, UnitOfWork.FileRepository.GetFileBytes(SelectedAttachment.Id));
Process.Start(tempFile);
}
catch (Exception ex)
{
Notification.Error("Person - Opening attachment", "File couldn't open, please close last file instance.");
}
});
Events.PublishOnUIThread(new BusyEvent { IsBusy = false });
}
我正在寻找一种方法,这样它就可以执行繁忙的指标,而不必每次都重复它。
像
这样的东西public async void OpenAttachment()
{
Execute(() => await Task.Run(() => {....TaskWork});
}
想知道是否有人可以提供有关如何减少此重复代码的提示。
答案 0 :(得分:8)
你的意思是这样的吗?
public async Task RunBusyTask(Action task)
{
Events.PublishOnUIThread(new BusyEvent { IsBusy = true });
await Task.Run(task);
Events.PublishOnUIThread(new BusyEvent { IsBusy = false });
}
RunBusyTask(() => {...});