C#/WPF
[WPF] Action 비동기 수행하기
kjun.kr
2022. 4. 1. 09:43
728x90
728x170
#region AsyncAction
/// <summary>
/// Action 수행 및 CompleteAction 을 통해 완료시 Action 도 수행가능
/// </summary>
/// <param name="action"></param>
/// <param name="completeAction"></param>
public static void AsyncAction(Action action, Action completeAction = null)
{
System.Threading.Tasks.Task task = System.Threading.Tasks.Task.Run(() =>
{
System.Windows.Threading.Dispatcher.CurrentDispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background, (Action)(() =>
{
action.Invoke();
}));
});
task.GetAwaiter().OnCompleted(() =>
{
if (task.Exception != null)
{
throw task.Exception;
}
else
{
completeAction?.Invoke();
}
});
}
#endregion
EventAggerator 에서 Publish 하게 될때 UI 가 갱신되기전에 Publish 가 수행되지 않게 되는데 이때 위 방법을 사용하게되면 Publish 가 바로 전달되어 실행되게 된다.
728x90
그리드형