Проблема обратного вызова службы Windows - PullRequest
0 голосов
/ 26 июня 2019

Это сложно объяснить, но, надеюсь, это имеет смысл.

Я разработал службу Windows в VB.NET, которая действует как сервер сокетов.Он использует библиотеку, где все функции в этой библиотеке имеют обратные вызовы.Поэтому мой код вызывает функцию, передает ее экземпляр функции и реализует функцию обратного вызова.

Иногда функция вызывается из моего основного сервиса.И в других случаях функция будет вызываться из входящего сообщения подключения сокета.И иногда функция обратного вызова будет вызывать другую функцию изнутри, что вызовет другой обратный вызов.

Например, если я вызываю функцию «Соединение» из моей службы или входящее сообщение сокета, и она вызывает «GotConnection» при подключении.А внутри «GotConnected» я буду вызывать «SendMessage», и он будет перезванивать «SentMessage».Или основной сервис я назову SendMessage.И так далее.

Иногда эти функции обратного вызова никогда не срабатывают, а иногда и срабатывают.Я знаю, что это не ошибка в библиотеке.Я считаю, что это проблема, связанная с многопоточностью, когда некоторые из этих функций вызываются в разных потоках.Может ли это быть проблемой?Или есть что-то еще, что может быть причиной этой проблемы?

Как я могу убедиться, что независимо от того, в каком потоке происходит входящее действие, функция и обратный вызов находятся в одном потоке?

Спасибо.

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