По какой-то причине у меня традиционно много проблем с BackgroundWorkers в C #;кажется, что их концепция действительно вводит меня в заблуждение, поэтому я надеюсь, что это довольно простой вопрос, и кое-что может быть исправлено достаточно легко ...
У меня есть две формы, использующие удаленное взаимодействие .NET для связи между ними,Прямо сейчас, изменение настроек в Form1 вызывает изменения в Form2, и это прекрасно работает.Однако теперь мне нужно, чтобы та же самая вещь работала другим способом (изменение чего-либо в Form2 приводит к обновлению Form1), и я не могу сделать это таким же образом (из-за ограничений в дизайне я не могу заставить Form2 отправить изменениедо формы 1).Прямо сейчас я пытаюсь использовать BackgroundWorker в Form1, чтобы постоянно вызывать метод «Update ()» для каждого из подчиненных элементов управления (которые размещены в Form1).У каждого из этих элементов управления есть возможность получить текущее состояние их эквивалентных настроек из Form2 и обновить себя (это работает хорошо; метод Update () уже работает над инициализацией Form1).
Вот тут и возникает моя проблема.Я не был уверен, как заставить BackgroundWorker постоянно вызывать Update () для каждой из форм, поэтому в моем методе DoWork () у меня есть цикл while (true), и внутри него BackgroundWorker вызывает Update() 'метод каждого субконтроля, затем спит в течение очень короткого времени, а затем повторяется.
При этом я получаю ошибку «InvalidOperationException не обрабатывается кодом пользователя» с деталями, указывающими, что «Кросс-нитьнедопустимая операция: элемент управления 'comboBox_BGColor' доступен из потока, отличного от потока, в котором он был создан. "Теперь я в основном знаю, что это значит, и понимаю, почему это произошло, однако я не уверен, что нужно делать по-другому или как изменить вещи, чтобы они работали по своему усмотрению.У кого-нибудь есть какие-либо советы по этому поводу или как я использую BackgroundWorker?Большое спасибо за любую информацию и за то, что нашли время прочитать это!