Witam,
Jak przekazać do UserControl obiekt okna głównego tak aby odwołać się do niego wszystkich komponentów, zmiennych itp?
Witam,
Jak przekazać do UserControl obiekt okna głównego tak aby odwołać się do niego wszystkich komponentów, zmiennych itp?
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.
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?
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
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.
no bez przesady.
Robisz QueueUserWorkItem(jakaśFunkcja, jakiśParametr)
i funkcja jakaśFunkcja(object parametr)
dostanie jakiśParametr
jako swój parametr.
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.
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ć?
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.