ПредишенСледващото

Код 3 форма (с таймер, лентата за напредъка и отмяна на работа бутон асинхронен):

UPD: решили проблема чрез прехвърляне на повикването към метод ThirdForm checkBox1_CheckedChanged след извикването worker`s. Лошото е, че за да се обадите на 3 форми на backgroundWorker1_DoWork. Вътре методите на работници тези приложения не работят правилно (поне не колкото ни се иска). Остава обаче още един проблем - бутона, за да отмените операцията, работник с 3 форми не са (нищо не се случва) се задейства. Макар че аз не разбирам как правилно да наричаме завършване работник от друг начин.

UPD2: Проблемът е решен с помощта на бутона, както следва:

Промени в кода под формата на 3:

Обработка на втората форма:

Формулярът трябва да се затвори или покаже съобщение за грешка (или MessageBox, или програмата ще падне). Грешката не може да се появи, ако не е в основния поток (например, ако backgroundWorker1_RunWorkerCompleted натоварване в друга нишка).

Предлагам във всеки случай вмъква в позове на този метод

В същото време добавя, след като MessageBox, за да се уверите, че backgroundWorker1_RunWorkerCompleted просто върши работата.

Що се отнася до BackgroundWorker прекъсване чрез Прекратяване () метод за темата, а след това за съжаление, той не го подкрепят. Разбира се, за да се направи неуспешен сетълмент () не е желателно, тъй като Остава мъртъв връзка. Въпреки, че събирачът тогава тя ще се затвори.

Мисля, че има смисъл да се откаже напълно BackgroundWorker и приложили по темата, поставяйки целия код на интерфейса в позове () (под формата не може да се променя в друга нишка).

Свързани статии

Подкрепете проекта - споделете линка, благодаря!