Diskuze: C# - Vlákno nemůže získat přístup k objektu a statické třídy
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
jednoducha odpoved:
misto
opertxt.Text = "Nepřihlášen";
napis
Dispatcher.Invoke((Action) (() => opertxt.Text = "Nepřihlášen"));
slozita:
serial port listener bezi na vlastnim vlakne, takze data co posila posila z
jineho vlakna nez je UI vlakno. to je problem, protoze UI controly jako buttony
a labely muze menit jen UI vlakno. abys mohl tyto prvky zmenit i z jineho vlakna
je treba udelat funkci, kde chces menit tyto prvky a tuto funkci zavolat pomoci
objektu Dispatcher, ktery zavola danou funkci s kontextem UI, coz nezpusobi tuto
chybu.
Díky moc, funguje. Jenom nevadí tomu že to může zavolat kromě listener vlákna i UI vlákno? Chybu to sice nevyhodilo, ale aby to tam nedělalo neplechu (použita jednodušší verze)
nevadi to nicemu jen to "teoreticky" snizuje vykon. pro nesnizovani vykonu se pouziva jeste
if (!Dispatcher.CheckAccess())
//volani pres invoke
else
//primy pristup
Zobrazeno 4 zpráv z 4.