C # Process.Start, Thread.IsBackGround, BackgroundWorker и .Net.Remoting - PullRequest
0 голосов
/ 17 марта 2011


Мне нужен совет, потому что я "заблокирован" ...

У меня есть клиент-серверное приложение, использующее .NetRemoting между клиентским процессом и серверным.
Процесс сервера вызывает события для клиента, вызывающего метод.
Затем клиент использует BackGroundWorker для передачи значений в пользовательский интерфейс.

Обычно сервер уже запущен при запуске клиента.
- При вызове BackGroundWorker.DoWork () значение Thread.CurrentThread.IsBackground равно True
- В событии BackGroundWorker_RunWorkerCompleted значение Thread.CurrentThread.IsBackground равно False

, если, есливо время загрузки клиента (открывается .exe) ему необходимо открыть (с помощью Process.Start ()) процесс сервера (.exe) перед тем, как он подключится
, затем в BackGroundWorker_RunWorkerCompleted Thread.CurrentThread.IsBackground по-прежнемуравно True и пользовательский интерфейс не может быть изменен в этой теме.
В этом случае мне нужно открыть другой клиент (подключающийся к тому же серверу), чтобы он работал хорошо.


В чем может быть разница между этими двумя ситуациями?
Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 марта 2011

Я нашел (а) решение: при запуске клиента:

lChannelTCP = new TcpChannel(lProps, provider, providerSrv);
ChannelServices.RegisterChannel(lChannelTCP, false);

или (не проверять ни одного)

RemotingConfiguration.ApplicationName = "EDV";

должно быть установлено до Процесс сервера запущен!

0 голосов
/ 17 марта 2011

Что у вас должно быть:

Клиент:
- Поток пользовательского интерфейса: запускает BGWorker и запускает BackgroundWorker.RunWorkerCompleted
--Backgroundthread: запускает BackgroundWorker.DoWork, связывается с сервером

<->

Сервер: общается с клиентом

Почему ваш сервер уже не работает, когда ваш клиент запускается? + Зачем использовать удаленное взаимодействие, если они работают на одной машине ??

...