No, já jsem s BackgroundWorkerek párkrát pracoval a pozoroval jsem několik věcí. Přímo z BackgroundWorkeru pracovat s komponentami na formu jde, vtip je ale v tom, že se s těmi komponentami nesmí pracovat nikde jinde. Takže je to o hubu přistupovat k nim přímo, protože nikdy nevíte, jestli komponenta není zrovna používaná. Řešením je ale událost WorkerProgressChanged. BackgroundWorkeru se musí nastavit ReportsProgress pozitivní a pak bude událost vyvolávat vždy, když zavoláte z handleru události DoWork BackgroundWorker.ReportWorkerProgress() nebo tak nějak. Tam dosadíte procentuálí postup (ale v podstatě tam můžete dávat čísla třeba od jedné do deseti, když si to znázornítě nějak rozumně v UI, takže třeba počet zpracovaných souborů a tak) a druhý, volitelný, parametr je UserState, což je objekt, který se předá. Ideální je dosadit anonymní objekt s příslušnými hodnotami a podle něj v handleru události WorkerProgressChanged nastavit změny v UI.
|