【发布时间】:2011-10-07 09:16:19
【问题描述】:
我有一个 winform 应用程序,我在其中侦听 Application_ThreadException 事件。当它被抛出时,我将对服务进行一个简单的调用(这将记录异常),当我们回到客户端时,将使用 MessageBox.Show。像这样:
this.GetMyClientService.LogException(new MyApp.DataContracts.FaultContracts.Generellt.GeneralFault(exceptionContainer));
System.Windows.Forms.MessageBox.Show("test");
问题是只要我做服务调用MessageBox.Show就不会调出申请表然后把自己放到上面吗?相反,消息框将单独显示。如果我单击托盘中的应用程序图标,将显示消息框,而不是表单?
如果我改为删除服务调用行 (GetMyClientService.Log...),则消息框将显示表单,然后将其置于其顶部。不能只调出表格(这是我需要的)。
这是为什么呢?我似乎是运行同样运行 MessageBox.Show 方法的服务调用的同一个线程?
致以最诚挚的问候
编辑1:
如果我把它改成这样:
ThreadPool.QueueUserWorkItem(new WaitCallback(LogException1), exceptionContainer);
//this.GetMyClientService.LogException(new MyApp.DataContracts.FaultContracts.Generellt.GeneralFault(exceptionContainer));
System.Windows.Forms.MessageBox.Show("test");
它也会起作用。但是一旦主 UI 线程执行服务调用,messageBox 就会关闭?
【问题讨论】: