Это сложно объяснить, но, надеюсь, это имеет смысл.
Я разработал службу Windows в VB.NET, которая действует как сервер сокетов.Он использует библиотеку, где все функции в этой библиотеке имеют обратные вызовы.Поэтому мой код вызывает функцию, передает ее экземпляр функции и реализует функцию обратного вызова.
Иногда функция вызывается из моего основного сервиса.И в других случаях функция будет вызываться из входящего сообщения подключения сокета.И иногда функция обратного вызова будет вызывать другую функцию изнутри, что вызовет другой обратный вызов.
Например, если я вызываю функцию «Соединение» из моей службы или входящее сообщение сокета, и она вызывает «GotConnection» при подключении.А внутри «GotConnected» я буду вызывать «SendMessage», и он будет перезванивать «SentMessage».Или основной сервис я назову SendMessage.И так далее.
Иногда эти функции обратного вызова никогда не срабатывают, а иногда и срабатывают.Я знаю, что это не ошибка в библиотеке.Я считаю, что это проблема, связанная с многопоточностью, когда некоторые из этих функций вызываются в разных потоках.Может ли это быть проблемой?Или есть что-то еще, что может быть причиной этой проблемы?
Как я могу убедиться, что независимо от того, в каком потоке происходит входящее действие, функция и обратный вызов находятся в одном потоке?
Спасибо.