我有一个winform应用程序,我在那里监听Application_ThreadException事件。当抛出它时,我将对服务进行简单调用(将记录异常),当我们回到客户端时,将使用MessageBox.Show。像这样:
this.GetMyClientService.LogException(new MyApp.DataContracts.FaultContracts.Generellt.GeneralFault(exceptionContainer));
System.Windows.Forms.MessageBox.Show("test");
问题在于,只要我进行服务调用MessageBox.Show就不会显示应用程序表单然后将其置于其上面?相反,Messagebox将单独显示。如果我点击托盘中的应用程序图标,将显示消息框,而不是表单?
如果我改为删除服务调用行(GetMyClientService.Log ...),则消息框将显示该表单,然后将其自身置于其上。不可能只提出表格(这是我需要的)。
为什么?我似乎是运行服务调用的同一个线程,它也运行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 :(得分:0)
进行服务呼叫时,您的UI线程被阻止。尝试进行异步服务调用。