У меня есть библиотека, которая обслуживает данные о событиях, поступивших из асинхронных операций TCP.
При использовании этих данных в элементах управления после их получения в пользовательском интерфейсе я получаю исключение Cross-Thread Opration. Как решить эту проблему, прежде чем пользователь библиотеки получит данные для отображения на своих элементах управления. Так что в основном мне нужно выбросить данные в свой собственный поток, где используется библиотека?
Тот же код, который используется для компактной среды со связанными файлами.
Я использую внутри библиотеки этот метод с помощью Control, чтобы сказать, требуется ли вызов, но он не работает.
public static void InvokeIfNecessary(Control control, Action setValue)
{
if (control.InvokeRequired)
{
control.Invoke(setValue);
}
else
{
setValue();
}
}
Пример кода, использующего событие для передачи данных пользователю, использующему библиотеку.
if (OnClientChangeConnection != null) SafeData.InvokeIfNecessary(_helpControl, () => OnClientChangeConnection(ConnectedClients, requestClientInfo)); // ConnectedClients is an integer and requestClientInfo is a List<ClientInfo> class type.
Спасибо.