在我的WPF应用程序中,我想在非UI线程中做一些工作,以避免UI变得不响应。对于我这样做:BeginInvoke()是否运行单独的线程?
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()
对象?
你用什么.NET版本? – PVitt 2011-04-07 08:09:27
@PVitt:我想...我使用.NET 4.0,因为我使用Visual Studio 2010. – Nawaz 2011-04-07 08:11:10