积极答复者
关于Dispatcher问题

问题
-
Deployment.Current.Dispatcher.BeginInvoke(() => save());
和
Dispatcher.BeginInvoke(() => save());
有什么不同?
- 已移动 Sheng Jiang 蒋晟Moderator 2012年3月9日 23:07 (发件人:Visual C#)
答案
-
这要看具体情况,每一个继承自DispatcherObject的类型,
都有Dispatcher属性,相同线程创建的对象,Dispatcher属性是相同的。
如果说上述代码都是在主UI线程上执行的话,
那么两者的效果是一样的。
- 已建议为答案 Jie BaoModerator 2012年3月12日 3:15
- 已标记为答案 Jie BaoModerator 2012年3月13日 2:21
-
还是要看具体情况,如果你的类是继承自 DispatcherObject, 那么他就有 Dispatcher 属性,否则就没有。 马里已有说明。 如果你只是想调用主UI线程的 Dispatcher 。 那么你可以通过任何一个在主UI线程创建出来的DispatcherObject (例如一些控件)来拿到主UI线程的 Dispatcher, 他们都是同一个Dispatcher。
假如你的类被夸线程使用,并且可能你的类需要操作一些STA线程内的代码或者值,则就需要通过 Deployment.Current.Dispatcher.BeginInvoke(() => save()); 将save方法返回到 Deployment.Current.Dispatcher 所在线程调用。
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
- 已建议为答案 Jie BaoModerator 2012年3月12日 3:15
- 已标记为答案 bianchunlei 2012年3月13日 1:14
全部回复
-
这要看具体情况,每一个继承自DispatcherObject的类型,
都有Dispatcher属性,相同线程创建的对象,Dispatcher属性是相同的。
如果说上述代码都是在主UI线程上执行的话,
那么两者的效果是一样的。
- 已建议为答案 Jie BaoModerator 2012年3月12日 3:15
- 已标记为答案 Jie BaoModerator 2012年3月13日 2:21
-
还是要看具体情况,如果你的类是继承自 DispatcherObject, 那么他就有 Dispatcher 属性,否则就没有。 马里已有说明。 如果你只是想调用主UI线程的 Dispatcher 。 那么你可以通过任何一个在主UI线程创建出来的DispatcherObject (例如一些控件)来拿到主UI线程的 Dispatcher, 他们都是同一个Dispatcher。
假如你的类被夸线程使用,并且可能你的类需要操作一些STA线程内的代码或者值,则就需要通过 Deployment.Current.Dispatcher.BeginInvoke(() => save()); 将save方法返回到 Deployment.Current.Dispatcher 所在线程调用。
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
- 已建议为答案 Jie BaoModerator 2012年3月12日 3:15
- 已标记为答案 bianchunlei 2012年3月13日 1:14