Diskuze: c# winform form ztráta focusu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, jednoduchá otázka: provadíš ty časově náročné operace v jiném vlákně? Pokud všechno jedes ve stejném vlákně jako UI, tak se nemůžeš divit, ze se Ti i timer zasekne, když to ma co dělat, aby to upočítalo.
To je logické chování. Použij na tu "operaci" BackgroundWorker a bude to šlapat, jak má...
Díky za pomoc. Zkusil jsem to s jiným vláknem, ve VisualStudiu mi to ale zahlásilo chybu "Operace mezi vlákny není platná: Přístup k ovládacímu prvku textBoxInfo proběhl z jiného vlákna než z vlákna, v rámci kterého byl vytvořen." Když ale program spustím přímo, jako aplikace.exe z adresáře Debug projektu, aplikace běží normálně, chybu žádnou nevyhodí, Textbox se vypisuje i v průběhu běhu toho vlákna. Na BackgroundWorker moje znalosti zatím nestačí .....
Tak nic, řešení jsem už našel.
public void nastavTextInfo(string text)
{
this.Invoke((MethodInvoker)delegate
{
textBoxInfo.Text = text;
});
}
Aby jsi se dostal k UI prvkum musis je invoknout
label1.Invoke((Action)delegate {
//operace jako nastaveni textu atd
});
pak bys nemel mit problem s cross thread
Zobrazeno 7 zpráv z 7.