服务后调用MessageBox不对吗?

时间:2011-10-07 09:16:19

标签: c# winforms wcf message

我有一个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就会关闭?

1 个答案:

答案 0 :(得分:0)

进行服务呼叫时,您的UI线程被阻止。尝试进行异步服务调用。