728x90
#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
'C# > WPF' 카테고리의 다른 글
[WPF] StringFormat 으로 소수점 세자리 표시 및 문자열 넣기 (0) | 2022.04.18 |
---|---|
[WPF] ComboBox Command Binding 하기 (0) | 2022.04.15 |
[WPF] DevExpress 컨트롤 이용한 Waiting/Progress Dialog 띄우기 (0) | 2022.03.21 |
[WPF] Command snippet (자작) (0) | 2021.12.16 |
[WPF] Control to Image (0) | 2021.12.14 |