Witam. Mam sobie swoja glowna forme... i chce uruchomic inna forme w osobnym wątku.
Pytanie za 100 pkt: jak to osiągnąc w jednej funkcji? Nie chce tworzyc dodatkowej funkcji tylko po to by wywolala ona mi showdialog().
Niespecjalnie sie da, bo ShowDialog nie pasuje do delegacji ThreadStart (nie zwraca void), wiec innego pomyslu jak stworzenie nowej metody nie mam. Chyba, ze tworzysz formatke dziedziczac z Form, to mozesz sprobowac przeladowac ShowDialog, ale watpie czy zadziala.
pozdrawiam
johny
Co prawda to jest tworzenie nowej metody no ale moze sie nada taka postac :P
Form Form = new Form();
new System.Threading.Thread(
new System.Threading.ThreadStart(
delegate { Form.ShowDialog(); }
)
).Start();
Nie nada sie, z powodu, o ktorym pisalem powyzej.
pozdrawiam
johny
Ale co to ma do rzeczy? Co prawda w tym kodzie jest stworzona nowa metoda ale mysle, ze zalozenie bylo takie zeby to jakos ladnie napisac zamiast tworzyc "normalna", metode z nazwa... A no i to jest >= .NET 2.0
VV [soczek]
Sorki, nie zauwazylem tam tego delegate. Zwracam honor :)
pozdrawiam
johny
Sprytne... akurat udalo mi sie przekonac szefostwo do .net 2.0 i wlasnie o taki trick mi chodzilo :)
Mozecie cos wiecej powiedziec na temat tego delegata? Do tej pory uzywalem ich tylko jako typy funkcji do zaimplementowania np w callback'ach i tak nie do konca rozumiem co sie dzieje w miejscu parametru ThreadStart.
Czy da sie teraz z ShowDialog jakos uzyskac zwracana wartosc? (tak, tylko z ciekawosci)
Tutaj delegate ma troche inne znaczenie niz typy *Delegate. Tworzy on po prostu wskaznik (typ Delegate :P) na funckje ktorej implementacja jest miedzy klamrami (umieszczasz tam kod jak w "normalnej" funkcji).
Co do do tej wartosci, da sie, jak mowilem, miedzy klamrami jest implementacja funkcji (pozwole sobie to nawet nazwac implementacja watku), czyli mozesz tam zrobic co ci sie podoba :)