Uruchomienie metody z poziomu wątku

0

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ół.

0

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.

0

Najprościej użyć BackgroundWorkera. Wszystkie potrzebne delegaty i eventy już są

0

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.

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