2010-05-05 20 views

Odpowiedz

17

uruchamia nowy wątek systemu operacyjnego w celu wykonania delegata. Gdy delegat wróci, wątek zostanie zniszczony. Jest to dość ciężka operacja (rozpoczynanie i niszczenie wątku), więc zazwyczaj robisz to tylko wtedy, gdy metoda będzie długotrwała.

Delegate.BeginInvoke wywoła delegata na wątku puli wątków. Po powrocie tej metody wątek jest zwracany do puli, aby mógł zostać ponownie użyty przez inne zadanie. Zaletą tego jest to, że kolejkowanie metody do puli wątków jest stosunkowo lekkie, ponieważ za każdym razem nie trzeba rozpoczynać nowego wątku.

Control.BeginInvoke wywołuje metodę w wątku dla formantu. Składniki interfejsu użytkownika są z natury jednowątkowe, a każda interakcja z kontrolką interfejsu użytkownika musi być wykonana na wątku, który ją utworzył. Control.BeginInvoke to przydatny sposób na zrobienie tego.