【发布时间】:2011-04-07 08:06:48
【问题描述】:
在我的 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() 对象?
【问题讨论】:
-
你使用什么 .NET 版本?
-
@PVitt :我认为...我使用 .NET 4.0 就像我使用 Visual Studio 2010 一样。
标签: c# wpf multithreading delegates begininvoke