Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 服务呼叫后的MessageBox操作不正确?_C#_Winforms_Wcf_Message - Fatal编程技术网

C# 服务呼叫后的MessageBox操作不正确?

C# 服务呼叫后的MessageBox操作不正确?,c#,winforms,wcf,message,C#,Winforms,Wcf,Message,我得到了一个winform应用程序,我在其中侦听应用程序\u ThreadException事件。当抛出此消息时,我将对服务进行一个简单调用,该服务将记录异常,当我们返回到客户端MessageBox时,将使用Show。像这样: this.GetMyClientService.LogException(new MyApp.DataContracts.FaultContracts.Generellt.GeneralFault(exceptionContainer)); System.Windows.

我得到了一个winform应用程序,我在其中侦听应用程序\u ThreadException事件。当抛出此消息时,我将对服务进行一个简单调用,该服务将记录异常,当我们返回到客户端MessageBox时,将使用Show。像这样:

this.GetMyClientService.LogException(new MyApp.DataContracts.FaultContracts.Generellt.GeneralFault(exceptionContainer));
System.Windows.Forms.MessageBox.Show("test");
问题是,只要我做服务调用MessageBox.Show,它就不会打开申请表,然后将自己放在上面?相反,Messagebox将单独显示。如果单击任务栏中的应用程序图标,将显示messagebox,而不是表单

如果我取而代之的是删除服务调用lineGetMyClientService.Log…,那么messagebox将显示表单,然后将其自身放在表单的顶部。这是不可能的,只是提出形式,这是我所需要的

为什么呢?我认为MSE是运行服务调用的同一个线程,该服务调用也运行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就会关闭?

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

我的观点是,UI线程是进行服务调用的线程,因此它将被阻止。没问题,我可以等。但是在UI线程完成服务调用之后,它应该显示messagebox。这种情况也会发生,问题是表单和messagebox不能像day那样在跳过服务调用时一起工作?