Dobrá den, dělám jednu aplikaci a mám takový problém. Mám třídu, kde vrací pole retězců, které se stahují ze SOAP služby. Vše funguje v pořádku. Ale pokud vytvořím formulář a zavolám tam kód pro přidání výsledku do ComboBoxu, tak formulář zamrzne. Pro představu -
public void LoadStrings()
{
foreach(string s in engine.GetStrings())
{
comboBox1.Items.Add(s);
}
}
Pokud tuto metodu zavolám 1) V konstruktoru Aplikace se strašně dlouho spouští. 2) V eventu form.Shown Formulář zamrzne 3) V eventu form.Activated Formulář zamrzne 4) Použiji anonymní metodu
this.Invoke((MethodInvoker) delegate {
LoadStrings();
});
Také zamrzne 5) Jiné vlákno Aplikace vyhodí vyjímku, že se pokouším s GUI manipulovat z jiného vlákna, než bylo vytvořeno. Nevíte jak to udělat, aby se aplikace nezpouštěla dlouho, ale ani nezamrzlo GUI, aby se třeba zobrazil Dialog, že se stahují stringy(Zobrazil se formulář než se stringy stáhnou)? Děkuji za odpověď
|