Console.WriteLine
281
2020-12-17 15:21:18
3
141

Task/async/await


아무것도 모르는 초보입니다. 선배님들의 도움이 필요합니다.


제가 지금 코드를 짜면서 Task/ Async/ Await를 사용하고 있습니다. 근데 Task.Run으로 실행시킨 메서드를 통해서 리턴 값을 받은 다음 await를 사용한 새로운 Task를 Run 시키면 그대로 멈춥니다...

MFCConnectionCommand = new RelayCommand(async () =>
            {
                if (BtnOpenStatus)
                {
                    BtnOpenStatus = await model.Open(SelectedPortName, SelectedBaudRate);

                    if (BtnOpenStatus)
                    {
                        await Task.Run(() =>
                        {
                            for (int i = 0; i < MFCSetFlow.Length; i++)
                            {
                                MFCSetFlow[i] = model.readSettingFlow(i + 1);
                            }
                        });
                        Dispatcher.CurrentDispatcher.Invoke(() =>
                        {
                            RaisePropertyChanged("MFCSetFlow");
                        });
                    }
                }
                else
                {
                    BtnOpenStatus = await model.Close();
                }

힌트 좀 주세요 ㅠ

0
  • 답변 3

  • 초보자1212
    2k
    2020-12-17 16:32:28 작성 2020-12-17 16:33:54 수정됨

    1. MFCSetFlow.Length 가 아니라 length 소문자입니다

    2. "근데 Task.Run으로 실행시킨 메서드를 통해서 리턴 값을 받은 다음 await를 사용한 새로운 Task를 Run 시키면 그대로 멈춥니다..."

    이게 무슨말인지 잘 이해가 안되네요

    "새로운" Task Run 이 어딨나요? 코드에는 단 한개의 await Task.Run 밖에는 보이지 않네요


  • Console.WriteLine
    281
    2020-12-17 17:32:37

    model.Open가 Task<bool>로 선언되어 있습니다.

  • 피자7
    637
    2020-12-17 22:54:39

    c# 인가요? 맞는 대답인지는 모르겠지만 js에서 await 응답이 없다는건

    말그대로 그 작업에 무슨 문제가있어서 끝내지 못하는걸 무기한 기다리고 있어서 그러는경우가 많습니다

  • 로그인을 하시면 답변을 등록할 수 있습니다.