2011-10-07 3 views
0

Application_ThreadException 이벤트에서 수신 대기하는 winform 응용 프로그램이 있습니다. 이 문제가 발생하면 (예외를 기록 할 것입니다) 서비스에 대한 간단한 호출을하고 MessageBox.Show 클라이언트가 다시 사용될 때 사용합니다. 이처럼 :서비스 요청 후 MessageBox가 올바르게 작동하지 않습니까?

this.GetMyClientService.LogException(new MyApp.DataContracts.FaultContracts.Generellt.GeneralFault(exceptionContainer)); 
System.Windows.Forms.MessageBox.Show("test"); 

문제는 내가 서비스 요청을 한 것처럼 MessageBox.Show이 신청서를 제기하고 그 위에 자신을 올려 놓지 것입니다? 대신 Messagebox가 단독으로 표시됩니다. 용지함의 응용 프로그램 아이콘을 클릭하면 양식이 아닌 메시지 상자가 표시됩니까?

대신 서비스 호출 행 (GetMyClientService.Log ...)을 제거하면 messagebox가 양식을 가져온 다음 그 위에 자체를 배치합니다. 양식을 가져 오는 것은 불가능합니다 (이것이 내가 필요한 것입니다).

왜 그럴까요? 내가 MessageBox.Show 메서드를 실행하는 서비스 호출을 실행하는 동일한 스레드가 될 것 같은데?

BestRegards

EDIT1

:

나는이로 변경하는 경우 :

ThreadPool.QueueUserWorkItem(new WaitCallback(LogException1), exceptionContainer); 
//this.GetMyClientService.LogException(new MyApp.DataContracts.FaultContracts.Generellt.GeneralFault(exceptionContainer)); 

System.Windows.Forms.MessageBox.Show("test"); 

또한 작동합니다. 하지만 메인 UI 스레드가 서비스 호출을 수행하자마자 messageBox가 꺼지게됩니까?

답변

0

서비스 호출시 UI 스레드가 차단됩니다. 비동기 서비스 호출을 시도하십시오.

+0

이것에 대한 내 견해는 UI 스레드가 serviceCall을 만드는 스레드이고이 스레드는 차단된다는 것입니다. 이것은 문제가되지 않습니다. 나는 기다릴 수 있습니다. 그러나 UI 스레드가 서비스 호출을 한 후에는 메시지 상자가 표시되어야합니다. 이것은 또한 발생합니다. 문제는 양식과 메시지 상자가 하루 같이 작동하지 않는다는 것입니다. 서비스 호출을 건너 뛰면? – Banshee

관련 문제