在我的 WPF 应用程序中,我想在非 UI 线程中做一些工作,以避免 UI 变得无响应。为此,我这样做了:
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()
对象?