Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Problém s vyjímko - Cannot access a disposed object

Aktivity
Avatar
jackxl
Člen
Avatar
jackxl:18.9.2015 13:48

Zdar.
Tuto chybu už jsem hledal na Googlu, ale nic neodpovídá mému problému.

Vytvořil jsem si singleton s názvem DataFormulare, který dědí od interfacu INotifyProper­tyChanged.
V něm jsem vytvořil vlastnost nazvanou ControlInvoke typu Control.
a vlastnost ZmerenaDavka, která vyvolá událost, když se hodnota nastaví.
V konstruktoru Form1 jsem přiřadil a inicializoval DataBinding na textBox

DataFormulare.Instance.ControlInvoke = this;
txtZmerDavka.DataBindings.Add(new Binding("Text", DataFormulare.Instance, "ZmerenaDavka"));

Potom spouštím vlákno s nejvyšší prioritou a v něm je toto krom dalšího kódu samozřejmě:

DataFormulare.Instance.ControlInvoke.Invoke(new ThreadStart(delegate()
                            {
                                DataFormulare.Instance.ZmerenaDavka =   NC.prepocetNaDavku(DataFormulare.Instance.ZmerenaDavkaOkamzita1,
                                    ObecneMapovani.RozliseniOdmVsrku, ObecneMapovani.PlochaOdmVrsku)
                            }));

Problém je v tom, že po nějaké náhodné době mi vyskočí vyjímka "Cannot access a disposed object. Object name: Form1". Nevíte čím to může být ?

Běží mi vlákno ve kterém měřím hodnoty a pak změřené hodnoty zobrazuji na formuláři.
Vlákno běží nepřetržitě po celou dobu programu a hodnoty potřebuji i v jiných třídách.

Odpovědět
18.9.2015 13:48
Žádná hranice není nepřekonatelná.
Avatar
Odpovídá na jackxl
sadlomaslox25:18.9.2015 15:07

1. tohle
DataFormulare­.Instance.Con­trolInvoke = this;
bych nedelal v konstruktoru ale na udalost FormLoad protoze Invoke nema moc rad neinicializovany formular aspon co si pamatuju.

2. kolik mas formularu v aplikaci? je form1 jediny formular v aplikaci ? skryvas nekdy ten formular? ta chyba rika ze volas metodu Invoke nad instanci tridy Form1 ale tato instance uz neexistuje.

 
Nahoru Odpovědět
18.9.2015 15:07
Avatar
jackxl
Člen
Avatar
jackxl:21.9.2015 14:24

ad 1) Zkusím přehodit
ad 2) Mám 9 formulářů.
Form1 je ale jediný, který je stále aktivní a v něm jsou záložky.

Nahoru Odpovědět
21.9.2015 14:24
Žádná hranice není nepřekonatelná.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.