Я пытаюсь отключить части пользовательского интерфейса в приложении .NET на основе опроса, выполненного в фоновом потоке. Фоновый поток проверяет, является ли соединение с глобальной базой данных, используемое приложением, все еще открытым и работоспособным.
Что мне нужно сделать, и я бы предпочел сделать это без опроса в потоке пользовательского интерфейса, это добавить обработчик событий, который может вызываться фоновым потоком, если состояние соединения изменяется. Таким образом, любая форма может иметь обработчик, который отключит те части пользовательского интерфейса, которые требуют подключения для работы.
Попытка использовать прямое объявление события в классе, который содержит подпрограмму потока, и инициирование события в фоновом потоке, что приводит к ошибкам выполнения между потоками при доступе к элементам управления пользовательского интерфейса из других потоков.
Очевидно, что есть правильный способ сделать это, но у нас ограниченный опыт работы с событиями (в основном однопоточными приложениями), и почти ни один с делегатами. Я прочитал документацию и примеры для делегатов, и кажется, что это ближе к тому, что нам нужно, но я не уверен, как заставить это работать в этом случае.
Приложение написано в основном на VB.NET, но пример или помощь на C # тоже подойдут.