C # ждать начала процесса - PullRequest
3 голосов
/ 17 мая 2011

У меня есть 2 программы (клиент и сервер), которые общаются с помощью ipc.В основном клиент отправляет некоторые данные на сервер, и они работают на одном компьютере.Я хочу, чтобы клиент дождался запуска процесса сервера, если он еще не запущен, но не совсем понимаю, как этого добиться.Я думаю об использовании 2 событий (одно, которое создано моим клиентом, и одно, созданное сервером), и заключаю оба вызова в ожидание этих событий в критической секции.Что вы предложите?

1 Ответ

0 голосов
/ 17 мая 2011

Как работает МПК? Я предполагаю, NamedPipes, но идея для меня та же. Я должен был сделать что-то подобное в прошлом и сделал примерно так:

  • Клиент запускается, подключается к серверу IPC (при условии, что NamedPipes. Не должно иметь значения)

  • Сбой подключения, клиент восстанавливается путем запуска сервера (это может быть выполнено различными способами: от выполнения двоичного файла сервера из известного местоположения до использования служб запуска с триггером )

  • Сервер запускается и в качестве одного из первых претендует на IPC-адрес (или глобальный мьютекс, если вам больше нравится этот). Если несколько серверных процессов запускаются с нескольких клиентов, первый выигрывает, а остальные просто умирают.

  • Клиент повторяет попытку через соответствующее время

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