Запускает ли BeginInvoke () отдельный поток?

В моем приложении WPF я хочу проделать некоторую работу в потоке без пользовательского интерфейса, чтобы пользовательский интерфейс не перестал отвечать. Для этого я сделал следующее:

var caller = new AsyncMethodCaller<Pattern>(this.SetPatternType);
caller.BeginInvoke(_patterns, null, null);

И делегат определяется как,

public delegate void AsyncMethodCaller<in T>(IEnumerable<T> data);

Мой вопрос:

Создает ли BeginInvoke () новый поток и обратный вызов SetPatternType работает в нем? Если да, то как долго прослужит эта цепочка?

Подходит ли этот подход в целом? Если нет, то что с этим не так? И с какими потенциальными проблемами я могу столкнуться?

Я использую C # 4.0 и Visual Studio 2010.


РЕДАКТИРОВАТЬ:

Также мне нужно несколько рекомендаций по этому поводу:

Когда я должен создавать новый сам, и когда мне следует использовать BeginInvoke () ? И когда мне следует использовать DispatcherObject.Dispatcher. Объект BeginInvoke () ?

9
задан Nawaz 7 April 2011 в 08:16
поделиться