Фон
Мне нужно запустить и остановить программу Windows -Forms, написанную на VB. NET через службу, которую я должен написать. Служба должна передавать аргументы типа -A для автоматического запуска обработки программы Windows -Forms. Приложение Windows -Forms и служба работают как в локальной системе, поэтому я выбрал AnonymousPipes в качестве технологии IP C.
Поскольку я не нашел по-настоящему хорошего ресурса, который мог бы правильно объяснить мне эту c, я попробовал Документацию Microsoft на AnonymousPipes .
Мой подход
Мне удалось установить sh соединение службы с приложением WinForm. Мой дальнейший подход заключался в том, чтобы попытаться использовать таймер как средство обновления, чтобы получать больше команд, чем команды syn c, и делать это одновременно с остальной частью обработки. Перед событием тика я делаю следующее:
Dim pipeClient As PipeStream = New AnonymousPipeClientStream(PipeDirection.In, args(0))
Dim ipc As StreamReader = New StreamReader(pipeClient)
В событии тика я пробую следующее:
If (ipc.ReadLine() = "SYNC") Then
serviceSynced = True
End If
If (serviceSynced) Then
Select (ipc.ReadLine())
case "-A"
Call mnu_startProgram
case "-S"
Call mnu_stopProgram
End Select
End If
Клиент канала работает до оператора select. После достижения оператора выбора он просто ничего не делает.
Мой вопрос
Неправильная реализация? Я спрашиваю себя, могу ли я обновить sh синтаксический анализ аргументов, переданных через анонимный канал, с событием тика, чтобы обнаружить команду остановки? , если моя реализация неверна и как я это делаю правильно. И что вы можете назвать подходящий ресурс, чтобы понять анонимные каналы, и на следующем шаге IP C лучше в целом.
Заранее спасибо.