응용 프로그램 디스패처 호출이 응용 프로그램을 중지합니다.

adminSoftDK

응용 프로그램이 멈추는 데 문제가 있습니다. 내 시나리오를 설명하겠습니다. 데이터베이스에 대한 비동기 호출을 수행하여 항목 목록을 가져 오는 서비스가 있습니다. 작업에 의해 실행됩니다. 이 작업 안에 try catch 블록이 있으므로 다음과 같이 보입니다.

public Task<List<T>> ComboListAsync(int? id = null, EnumDTO dto = EnumDTO.Default)
    {
        return Task.Run(() =>
        {
            using (var context = new ContextService())
            {
                try
                {
                    return GetComboList(id, dto, context);
                }
                catch (Exception e)
                {
                    Handler.DatabaseConnectionException();
                    throw;
                }
            }
        });
    }

그런 다음 GetComboList로 예외를 throw합니다. (현재로서는)

    protected virtual List<T> GetComboList(int? id, EnumDTO dto, ContextService context)
    {
        throw new NotImplementedException();
    }

따라서 호출은 예외를 포착하고 여기로 들어갑니다.

    public void Show(string message)
    {
        Message = message;
        Application.Current.Dispatcher.Invoke(() =>
        {
            dialogView = new DialogView() {DataContext = this, Owner = Application.Current.MainWindow};
            dialogView.ShowDialog();
        });
    }

이제 Dispatcher가 앱을 중지하고 begin invoke를 사용하도록 변경하려고 시도했지만 동일한 작업을 수행합니다. 디스패처가 없으면 호출 스레드가 STA가 아니라는 오류 메시지가 표시됩니다. 데이터베이스에 연결하는 데 문제가 있다는 메시지를 대화 창에 표시하고 싶습니다. 누구든지 도울 수 있습니까? 나는 온라인을 보았고 발송자에 대한 많은 스레드가 있지만 실제로 내 문제를 해결할 해결책을 보여주는 것은 없습니다.

감사합니다

ComboListAsync를 호출하는 코드 편집

    protected override void RetrieveRelatedActiveLists()
    {
        MyCollection = service.ComboListAsync().Result;
    }
Marcelo de Aguiar

호출 코드로 인해 교착 상태가 .Result.

를 사용 service.ComboListAsync().Result하면이 메서드가 반환 될 때 Application.Current.Dispatcher.Invoke까지 UI 스레드가 대기하고, 그 안에서 호출 하면 메서드 자체의 반환을 기다리는 UI 스레드에 메시지를 보냅니다.

다음 과 같은 방법을 기다려야 합니다 service.ComboListAsync().

  protected override async void RetrieveRelatedActiveLists()
  {
      MyCollection = await service.ComboListAsync();
  }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

응용 프로그램이 입력 동기 호출을 디스패치하고 있습니다.-SSIS

분류에서Dev

응용 프로그램이 로그인 쿠키 생성을 중지합니다.

분류에서Dev

다른 응용 프로그램의 사전 빌드 프로세스에서 cmd 응용 프로그램을 호출하는 방법은 무엇입니까?

분류에서Dev

수출 / angel이라는 응용 프로그램 패키지

분류에서Dev

비 OSGi 응용 프로그램에서 OSGi 응용 프로그램을 어떻게 호출합니까?

분류에서Dev

gprof는 다중 스레드 응용 프로그램을 지원합니까?

분류에서Dev

프로세스가 내 응용 프로그램을 중단

분류에서Dev

푸른 웹 응용 프로그램에서 호스팅 심포니 4 응용 프로그램을 사용하여 클라이언트 IP를 얻는 방법

분류에서Dev

Fileupload로 인해 응용 프로그램이 중지됩니다.

분류에서Dev

xhost + localhost를 사용하지 않으면 xforwarding을 사용하는 응용 프로그램이 실패합니다.

분류에서Dev

응용 프로그램 패키지 이름 바꾸기

분류에서Dev

시스템 사용자로 응용 프로그램 호출 (Windows)

분류에서Dev

Ruby 응용 프로그램이 다른 호스트에서 UDP 패킷을 수신하지 않습니다.

분류에서Dev

응용 프로그램 실행 후 응용 프로그램이 중지되었습니다.

분류에서Dev

(응용 프로그램 이름)이 중지되었습니다.

분류에서Dev

스프링 부트 응용 프로그램이 OpenJDK를 지원합니까

분류에서Dev

Android sqLite .. 응용 프로그램이 중지되었습니다.

분류에서Dev

응용 프로그램을 처음 열 때 조건부 페이지 표시

분류에서Dev

응용 프로그램이 사용중인 디스플레이 확인

분류에서Dev

윌 GOOGLEPLAY에 의해 응용 프로그램 서명이 내 응용 프로그램을 다시?

분류에서Dev

응용 프로그램 출력을 로그 파일로 리디렉션하는 데 문제가 있습니다.

분류에서Dev

응용 프로그램을 다른 폴더로 이동

분류에서Dev

응용 프로그램이 포커스를 잃을 때 니모닉 해제

분류에서Dev

뮤텍스는 응용 프로그램을 죽입니다

분류에서Dev

QCompleter setModel이 응용 프로그램을 충돌시킵니다.

분류에서Dev

응용 프로그램이 작동을 멈췄습니다.

분류에서Dev

Flutter 앱이 다른 응용 프로그램에서 열립니다 (중복 응용 프로그램)

분류에서Dev

버튼을 클릭하면 응용 프로그램이 중지됩니다.

분류에서Dev

DLL의 Graph API 호출은 다른 응용 프로그램에서 호출 할 때 실패합니다.

Related 관련 기사

  1. 1

    응용 프로그램이 입력 동기 호출을 디스패치하고 있습니다.-SSIS

  2. 2

    응용 프로그램이 로그인 쿠키 생성을 중지합니다.

  3. 3

    다른 응용 프로그램의 사전 빌드 프로세스에서 cmd 응용 프로그램을 호출하는 방법은 무엇입니까?

  4. 4

    수출 / angel이라는 응용 프로그램 패키지

  5. 5

    비 OSGi 응용 프로그램에서 OSGi 응용 프로그램을 어떻게 호출합니까?

  6. 6

    gprof는 다중 스레드 응용 프로그램을 지원합니까?

  7. 7

    프로세스가 내 응용 프로그램을 중단

  8. 8

    푸른 웹 응용 프로그램에서 호스팅 심포니 4 응용 프로그램을 사용하여 클라이언트 IP를 얻는 방법

  9. 9

    Fileupload로 인해 응용 프로그램이 중지됩니다.

  10. 10

    xhost + localhost를 사용하지 않으면 xforwarding을 사용하는 응용 프로그램이 실패합니다.

  11. 11

    응용 프로그램 패키지 이름 바꾸기

  12. 12

    시스템 사용자로 응용 프로그램 호출 (Windows)

  13. 13

    Ruby 응용 프로그램이 다른 호스트에서 UDP 패킷을 수신하지 않습니다.

  14. 14

    응용 프로그램 실행 후 응용 프로그램이 중지되었습니다.

  15. 15

    (응용 프로그램 이름)이 중지되었습니다.

  16. 16

    스프링 부트 응용 프로그램이 OpenJDK를 지원합니까

  17. 17

    Android sqLite .. 응용 프로그램이 중지되었습니다.

  18. 18

    응용 프로그램을 처음 열 때 조건부 페이지 표시

  19. 19

    응용 프로그램이 사용중인 디스플레이 확인

  20. 20

    윌 GOOGLEPLAY에 의해 응용 프로그램 서명이 내 응용 프로그램을 다시?

  21. 21

    응용 프로그램 출력을 로그 파일로 리디렉션하는 데 문제가 있습니다.

  22. 22

    응용 프로그램을 다른 폴더로 이동

  23. 23

    응용 프로그램이 포커스를 잃을 때 니모닉 해제

  24. 24

    뮤텍스는 응용 프로그램을 죽입니다

  25. 25

    QCompleter setModel이 응용 프로그램을 충돌시킵니다.

  26. 26

    응용 프로그램이 작동을 멈췄습니다.

  27. 27

    Flutter 앱이 다른 응용 프로그램에서 열립니다 (중복 응용 프로그램)

  28. 28

    버튼을 클릭하면 응용 프로그램이 중지됩니다.

  29. 29

    DLL의 Graph API 호출은 다른 응용 프로그램에서 호출 할 때 실패합니다.

뜨겁다태그

보관