Diskuze: c# form - chyba: Nelze volat funkci Invoke...
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
No heleme se, nejdříve na fóru Živě, teď i tady na ITnetworku.
Dobrá, nebudu jim dělat reklamu, koneckonců, zvýrazňování syntaxe je zde
mnohem lepší.
Jak jsem říkal, není dobrý nápad se připichovat na událost, která
využívá Invoke/BeginInvoke, když není vytvořen popisovač okna.
Totiž toto se tady děje.
Potřebuješ se připíchnout na událost jakmile formulář je zobrazen, aby si nezavolal metodu Invoke/BeginInvoke když popisovač neexistuje.
Překryj si metodu "SettingsForm.OnShown" (připíchnutí na událost z nějakýho důvodu nefunguje), a připíchni si události z timeru tam.
protected override void OnShown(EventArgs e)
{
//Připichujeme se na události
comm.OnSerialDataReceived += new Communication.DataReceivedEventHandler(comm_OnSerialDataReceived);
comm.OnTimedEvent +=new Communication.TimedEventEventHandler(comm_OnTimedEvent);
//Voláme původní metodu (tu překrytou)
base.OnShown(e);
}
chyba je v tom ze mas staticky event a vznikani ti tak "memory leak". musis
se v metode on form close/hide odregistrovat
comm.OnSerialDataReceived -= new
Communication.DataReceivedEventHandler(comm_OnSerialDataReceived);
comm.OnTimedEvent -=new
Communication.TimedEventEventHandler(comm_OnTimedEvent);
}
proto ti to spadne az pri druhem formulari protoze ten event posila data tomu prvnimu formulari ktery ale uz davno neexistuje ale ten event si ho furt pamatuje.
Ahoj. Díky moc...
Vytovořil jsem metodu formclose a tam jsem odregistroval obě události. A teď
už to funguje.
Ještě jednou díky...
Zobrazeno 4 zpráv z 4.