Przekazanie obiektu okna głównego

0

Witam,

Jak przekazać do UserControl obiekt okna głównego tak aby odwołać się do niego wszystkich komponentów, zmiennych itp?

0

Zakładając, że okno główne ma nazwę Form1, są dwa sposoby - w UserControl modyfikujesz konstruktor tak, aby przyjmował parametr typu Form1, lub dodajesz w tej kontrolce właściwość (albo zwykłe pole, ale zalecane są właściwości) typu Form1, następnie możesz używać wszystkich publicznych i wewnętrznych składowych.

0

Ok, przekaże w konstruktorze - będzie najłatwiej :)

Ma drugie pytanie a nie chcę zakładać nowego wątku - muszę tworzyć kilka wątków w programie, jednak ich ilość jest dynamiczna. Każdy wątek będzie wykorzystywać jedną procedurę. Muszę mieć jednak kontrolę nad każdym wątkiem - może zajść potrzeba wstrzymania go lub zabicie go w dowolnym potrzebie.

Jak to zrobić? Da się zrobić listę wątków tak aby mieć wszystko w jednym miejscu?

0

twoja kontrolka powinna być niezależna od innych – zamiast kontrolce pozwalać na dostęp do innych, lepiej utworzyć w niej odpowiednie eventy OnCośtam.

Jak to zrobić? Da się zrobić listę wątków tak aby mieć wszystko w jednym miejscu?

http://msdn.microsoft.com/en-us/library/3dasc8as(v=vs.100).aspx

0

Może i masz rację :)

Czy macie jakiś łatwiejszy przykład z wielowątkowością?
Niestety nie rozumiem go i nie wiem jak wykorzystać taki mechanizm w swojej aplikacji.

0

no bez przesady.
Robisz QueueUserWorkItem(jakaśFunkcja, jakiśParametr) i funkcja jakaśFunkcja(object parametr) dostanie jakiśParametr jako swój parametr.

0

Ja, pisząc swój mały projekt komunikatora, a mianowicie serwer dla niego, stworzyłem klasę User, która zawierała - poza różnymi innymi zmiennymi i funkcjami - właśnie zmienną z Thread, która była uruchamiana w konstruktorze i zamykana odpowiednią metodą, następnie, w głównej klasie ów serwera wszyscy Userzy byli przechowywani w tablicy, co dawało właśnie opcję "dynamicznych wątków" - wątki tworzyły się z zalogowaniem się nowego usera i usuwały z jego wylogowaniem się. Nigdy raczej nie bawiłem się jakimiś egzotycznymi - jak dla mnie przynajmniej - klasami, delegatami czy metodami z Frameworka, zazwyczaj używałem jak najprostszych mechanizmów.

0
underTaker napisał(a):

w głównej klasie ów serwera wszyscy Userzy byli przechowywani w tablicy, co dawało właśnie opcję "dynamicznych wątków" - wątki tworzyły się z zalogowaniem się nowego usera i usuwały z jego wylogowaniem się.

Wątek dla każdego użytkownika, nawet jeśli ten nic nie robi? To aby na pewno sensowne wydajnościowo rozwiązanie? Ilu użytkowników mógłbyś jednocześnie obsłużyć?

2

Raczej na pewno bardziej opłaca się stworzyć pulę wątków i dostosować ich ilość do maszyny na której serwer stoi, zamiast co chwilę odpalać, ubijać wątek. .Net zapewne ma już gotowe klasy do obsługi takiego rozwiązania.

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