这很难解释,但希望它是有道理的。
我在VB.NET中开发了一个Windows服务,该服务充当套接字服务器。它正在使用一个库,该库中的所有函数都具有回调。因此,我的代码调用了一个函数,将自身的实例传递给该函数并实现了回调函数。
有时我的主要服务会调用一个函数。在其他情况下,将从传入的套接字连接消息中调用函数。有时回调函数会从其中调用另一个函数,这将触发另一个回调。
例如,如果我从服务中调用了一个名为“ Connect”的函数或一个传入的套接字消息,并且在连接时它将调用“ GotConnection”。在“ GotConnected”中,我将调用“ SendMessage”,并且将回调“ SentMessage”。或主要服务,我将调用SendMessage。等等。
有时,这些回调函数永远不会触发,有时会触发。我知道这不是库中的错误。我认为与线程有关的问题是,其中一些函数在不同的线程上被调用。这可能是问题吗?还是有其他原因可能导致此问题?
如何确保无论传入操作发生在哪个线程上,函数和回调都在同一线程上?
谢谢。