此刻我的代碼變得非常重複。我必須在整個軟件中反覆提高繁忙的指標。回調方法Task.Run()
的這三個動作是
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});
}
想,如果有人可以給我如何減少這種重複的代碼提示。
它C#使用委託者...看看到實況... –
如果你只需要回調,那麼你可以用好老'ContinueWith()'。 – abatishchev
不要使用'async void',它只允許用來使您的方法簽名與事件處理程序兼容。你的函數看起來不是一個事件處理程序,所以它應該做'async Task'。 –