none
关于Dispatcher问题 RRS feed

答案

  • 这要看具体情况,每一个继承自DispatcherObject的类型,

    都有Dispatcher属性,相同线程创建的对象,Dispatcher属性是相同的。

    如果说上述代码都是在主UI线程上执行的话,

    那么两者的效果是一样的。

    2012年3月11日 6:45
  • 还是要看具体情况,如果你的类是继承自 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

    2012年3月12日 3:15
    版主

全部回复

  • 这要看具体情况,每一个继承自DispatcherObject的类型,

    都有Dispatcher属性,相同线程创建的对象,Dispatcher属性是相同的。

    如果说上述代码都是在主UI线程上执行的话,

    那么两者的效果是一样的。

    2012年3月11日 6:45
  • 在普通的类文件中不能用Dispatcher.BeginInvoke(() => save());

    只能用Deployment.Current.Dispatcher.BeginInvoke(() => save());

    在普通类文件中Deployment.Current.Dispatcher.BeginInvoke(() => save());有什么用?

    2012年3月11日 8:13
  • 还是要看具体情况,如果你的类是继承自 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

    2012年3月12日 3:15
    版主