wpf Thread관리(예외처리)

Eden·2023년 3월 31일
0

3초마다 쓰레드 상태를 체크해 비정상종료시 알려주는 코드이다.

public async Task CheckingTask(Task ProjectPath)
        {
            Task task = ProjectPath;
            bool pass = false;
            while (!pass)
            {
                if (task.Status == TaskStatus.WaitingForChildrenToComplete)
                {
                    Console.WriteLine("Task is running...");
                }
                else if (task.Status == TaskStatus.Faulted)
                {
                    MainVM.Instance.ErrorMsgShow("해당 작업에 실패하였습니다.", "실패");
                    //MainVM.Instance.ErrorMsgShow(task.Exception.InnerException.Message, task.Exception.Message); 디버그용
                    pass = true;
                }
                else if (task.Status == TaskStatus.WaitingForActivation)
                {
                    Console.WriteLine("Task is running...");
                }
                else if (task.IsCompleted)
                {
                    pass = true;
                }
                await Task.Delay(3000);
            }
        }
  • 비동기 쓰레드에서 메인쓰레드와 충돌나는 경우에 대한 예외처리는
    System.NotSupportedException 에서 잡힌다.
    기존에 비동기 쓰레드 내에서 try catch문이 잘 동작하지 않는 부분에 대해서 catch(System.NotSupportedException) 로 메인쓰레드와 충돌 예외처리가 가능하다.
profile
주섬주섬..

0개의 댓글