Я пытаюсь научиться работать в сети, создав собственную сетевую библиотеку. В настоящее время у меня есть список новых клиентов, которые могут использовать такой код. Метод NewClientConnected () возвращает true, если в списке есть что-либо, и удаляет первый элемент.
ConnectedClient newClient; // ConnectedClient is my class storing it's socket and stream and all that.
if(NewClientConnected(out newClient)
{
...handling new client, notification, etc...
}
То же самое касается проверки новых пакетов (префикс среза потока). Я стремился поднять его на следующий уровень и попытаться вызвать события, когда такие вещи случаются, и началось с новых связей. Проблема в том, что событие вызывается из другого потока, вызывая исключение, так как событие обрабатывается в form1.cs.
Как я могу убедиться, что событие обрабатывается основным потоком из статического неуправляемого класса? Должен ли я просто продолжать делать то, что я делаю? (фрагмент выше) Я слышу идею отношений между потребителем и производителем, для которых все равно потребуется таймер (использует собственный поток) или другой поток, если я правильно помню.
Я пытался погуглить и посмотреть здесь, но, похоже, у всех разные проблемы. Он находится в проекте библиотеки, в то время как другие проекты (мой сервер и тест клиента) ссылаются на него.
Заранее спасибо.