Working with backgroundworker c #

3-as formanyomtatványok (időzítővel, progresszuspárral és törlés gombbal az aszinkron működéshez):

UPD: Megoldotta a problémát azáltal, hogy átvette a ThirdForm hívását a checkBox1_CheckedChanged módszerre a vorker meghívása után. A baj éppen a 3 formanyomtatvány meghívásából származott a háttérbenWorker1_DoWork. A belső munkatársak módszerei ezek a hívások nem működnek megfelelően (legalábbis nem úgy, ahogyan szeretnénk). Volt még egy probléma is - a 3-formájú munkadarab műveletének törlés gombja nem működik (csak nem történik semmi). Még nem értem, hogyan kell helyesen felhívni a munkavállaló egy másik formára való felmondását.

UPD2: A gombokkal kapcsolatos probléma a következőképpen oldható meg:

A kód a 3 formában változik:

Második feldolgozás:

Az űrlap zárja vagy megjeleníti a hibaüzenetet (vagy MessageBox, vagy a program leesik). Nem jelenhet meg hiba, ha nem a fő szálból származik (például ha a backgroundWorker1_RunWorkerCompleted egy másik szálon indul).

Javaslom, hogy csak ebben az esetben illessze be az Invoke-ot

Ugyanakkor hozzáadott egy extra MessageBox-ot, hogy megbizonyosodjon arról, hogy a backgroundWorker1_RunWorkerCompleted nem működik.

Abban az esetben, ha a BackgroundWorkert az Abort () módszerrel megszakítják, mint a Téma, akkor sajnos nem támogatja. Természetesen az Abort () nemkívánatos, mert továbbra is meghalt. Bár a szemétgyűjtő később bezárja.

Azt hiszem, teljesen el kell hagynia a BackgroundWorker-t, és végre kell hajtania mindent a szálon, és az interfész felület összes kódját az Invoke () -be (az űrlapokat nem lehet megváltoztatni egy másik szálon).

Kapcsolódó cikkek