Gunnman писал(а):
Какие события происходят в одном потоке а какие в разных?События onConnect/onErrorConnect происходят либо в потоке, вызвавшем doConnect (при AsyncConnect=False), либо в параллельном потоке (при AsyncConnect=True)
События onSend/onErrorSend происходят либо в потоке, вызвавшем doSend, либо в параллельном потоке после doSendAsync
Событие onReceive происходит в параллельном потоке чтения данных, onClientConnect - в параллельном потоке приёма подключений.
Событие onDisconnect/onClientDisconnect происходит либо в потоке, вызвавшем doDisconnect, либо в параллельном потоке чтения данных.
Поскольку прием данных и асинхронную отправку обслуживают по несколько параллельных потоков, то источником одного события в разное время могут быть разные потоки. Но, так как точка события одна, то нужно считать, что оно просто происходит в параллельном потоке (а каком именно - для автора схемы не имеет значения).
Если свойство AsyncEvents=False, то все перечисленные события, происходящие в параллельных потоках, вызываются из главного потока приложения (очереди сообщений). Для невизуальных приложений (не имеющих очереди сообщений), AsyncEvents всегда True.
Gunnman писал(а):
Правильно ли в моей схеме используется критическая секция?