Threading   otázka

VB.NET, WinForms

Aplikace typu WinForm spouští v události LoadForm nové vlákno (přes delegáta). Nové vlákno běží po celou dobu aplikace (Thread.IsBackground = True) a počítá nějaké stavy. Nicméně já bych potřeboval, aby za jistých okolností vypsal výsledky do labelů na hlavním formuláři.

Jenže když se pokusím v delegované funkci threadu zapsat něco do labelXY.text na formuláři, tak to spadne na hlášce "Cross-thread operation not valid" .

Jak se tohle řeší korektně a správně ?

Díky za pochopení problému a případnou radu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Použijte BackgroundWorker který je navržen pro Windows Forms, nebo WindowsFormsSynchronizationContext pro synchronizaci volání z cizího vlákna. Mnohokrát se to tady už řešilo, stačí hledat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback