Как IP C с AnonymousPipes в. NET -Framework действительно работает? - PullRequest
0 голосов
/ 07 мая 2020

Фон

Мне нужно запустить и остановить программу 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 лучше в целом.

Заранее спасибо.

...