Я пишу сетевую библиотеку, которую пользователь может передать указателю на функцию для определенных сетевых событий. Чтобы поддерживать цикл прослушивания от приложения разработчика, я передаю обработчик события в поток. К сожалению, это создает немного головную боль для обработки вещей поточно-безопасным способом. Например, если разработчик передает функцию, которая вызывает вызовы для своих элементов приложения Windows :: Forms, тогда будет выведено исключение InvalidOperationException.потокобезопасные указатели функций в C++
Есть ли хорошие стратегии для обеспечения безопасности потоков?
Не должен ли разработчик быть ответственным, чтобы удостовериться, что они не меняют свой компонент до тех пор, пока они не попадут в поток событий? –
Что вы подразумеваете под «thread safety» в вопросе - вы специально хотите, чтобы функция обратного вызова изменяла элементы Forms из другого потока? «Как написать многопоточный код?» ИМО не достаточно конкретна, чтобы отвечать. –