У меня есть два вопроса об использовании BackgroundWorker:Использование BackgroundWorker в C#?
1) Допустим, у вас есть Функция A и B. Функция Функция A создает BackgroundWorker, который работает Функция B. Таким образом, BackgroundWorker теперь работает функцию B в отдельном потоке. Функция B - бесконечный цикл while, который я намерен запускать в течение длительного времени. После того, как функция A использует BackgroundWorker, она возвращается. Итак, теперь, когда функция, инициировавшая BackgroundWorker (Function A), вернулась, продолжает ли поток BackgroundWorker работать в фоновом режиме? Или он прекращает выполнение функции B, поскольку возвращаемая им функция вернулась? Если это прекратится, как я могу сделать так, чтобы функция B продолжала работать даже после того, как функция A вернулась?
2) Мне нужно получить доступ к элементам Window Forms (т. Е. Текстовому поле) из отдельного потока, созданного BackgroundWorker. Однако, если я попытаюсь получить доступ к элементам Window Forms из потока, который не является основным, я получаю ошибку поперечной потоковой передачи. Как я могу безопасно обращаться к элементам Window Forms из отдельного потока? Мне в основном нужно обновлять текстовое поле из отдельного потока. Я знаю, что у BackgroundWorker есть член под названием «RunWorkerCompleted», и он запускается после завершения BackgroundWorker. Это позволяет мне получить доступ к элементам Window Forms. Однако мне нужно получить доступ к элементу Window Forms во время моего потока, а не после его завершения. Как я могу получить доступ к ним безопасно через поток? Если это невозможно, то какие другие возможные решения проблемы?
Спасибо. Я использовал ProgressChanged, но он по-прежнему дает мне ошибку поперечной резьбы. Любая идея почему? – fdh
Вы (@Farhad) попробовали фрагмент кода, данный мной? –
@Amir Palsapure Спасибо за помощь. Ваш ответ слишком сложный для меня (без вашей вины), и это просто кажется немного проще, поэтому я решил попробовать. Я только начал C#, поэтому этот ответ кажется немного более понятным. Еще раз спасибо за вашу помощь. – fdh