Uruchamianie formy w osobny wątku

0

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().

0

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

0

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();
0

Nie nada sie, z powodu, o ktorym pisalem powyzej.

pozdrawiam
johny

0

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]

0

Sorki, nie zauwazylem tam tego delegate. Zwracam honor :)

pozdrawiam
johny

0

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)

0

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 :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1