MessageBox после сервисного звонка не действует правильно? - PullRequest
0 голосов
/ 07 октября 2011

У меня есть приложение 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?

BestRegards

Edit1:

Если я изменю его на это:

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

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

Так же будет работать.Но как только основной поток пользовательского интерфейса вызывает сервис, MessageBox отключается?

1 Ответ

0 голосов
/ 07 октября 2011

Ваш поток пользовательского интерфейса блокируется, когда вы делаете сервисный вызов.Попробуйте сделать асинхронный вызов службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...