Witam, jak uruchomić w wątku metodę? Muszę przekazać do niej argumenty, poczekać na zakończenie działania metody i odebrać wynik. Jak to zrobić? Chce tak zrobić ponieważ w wątku odbieram dane i na podstawie tego czy są one prawidłowe, czy nie, czy może wystąpiły błędy samego programu, odpowiadam. Przygotowanie tej odpowiedzi zajmuje kilka linii kodu i bez sensu jest pisać kilka razy to samo zmieniając jeden szczegół.
Nie wiem czy dobrze rozumiem o co Ci chodzi, ale spróbuję odpowiedzieć:
Witam, jak uruchomić w wątku metodę? Muszę przekazać do niej argumenty...
Tutaj masz jak wykonać metodę z parametrami na oddzielnym wątku: http://msdn.microsoft.com/en-us/library/system.threading.parameterizedthreadstart.aspx
..., poczekać na zakończenie działania metody...
: http://msdn.microsoft.com/en-us/library/95hbf2ta.aspx
i odebrać wynik.
: niestety w tym przypadku metoda nie może zwracać wartości (musi zwracać void), rozwiązaniem tego problemu jest zapis wyników w jakiejś zewnętrznej (poza metodą), współdzielonej (np. właściwość klasy) zmiennej (dla bezpieczeństwa dobrze obudować ją lock'iem) bo jak wiadomo wątki współdzielą przestrzeń adresową (również z wątkiem głównym).
Można też wykorzystać delegatów, wtedy możliwe jest wykonanie metody zwracającej jakąś wartość i odebranie tej wartości na oddzielnym wątku, oto jak to zrobić: http://msdn.microsoft.com/en-us/library/system.iasyncresult.aspx
To rozwiązanie wykorzystuje pulę wątków ThreadPool.
Jakby ktoś wiedział jak wykonać metodę zwracającej wartość i jak tą wartość odebrać przy użyciu Thread'a niech pisze
Choć wydaje mi się że to nie możliwe.
Najprościej użyć BackgroundWorkera. Wszystkie potrzebne delegaty i eventy już są
Dzięki za odpowiedź, zrobiłem to tak że tą metodę umieściłem w zupełnie innym pliku i nie było problemu z uruchomieniem.