В моем приложении 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 ()
?