看了MSDN似乎不太明白Dispatcher是用来干什么的。
“Dispatcher 可为特定线程维护其按优先顺序排列的工作项队列”
“当在线程中创建了 Dispatcher 时,它将成为可与该线程关联的唯一 Dispatcher,即使 Dispatcher 已经关闭”意思是这样吗:如果我再一个异步调用A()中又调用了this.Dispatcher.BeginInvoke(B()),那么,方法B()将会等待A()执行完毕之后,才回执行。是这个意思吗?
简单总结问题:
1.Dispatcher通常在什么情况下需要使用它?
2.使用Dispatcher的时候有什么需要注意的地方?
3.Dispatcher会怎么安排线程?

解决方案 »

  1.   

    BeginInvoke(Delegate, Object[])  
    用在其上创建了 Dispatcher 的线程的指定参数异步执行指定委托。 Invoke(Delegate, Object[])
    用与 Dispatcher 关联的线程上的指定参数同步执行指定委托。 所以当你用BeginInvoke的时候,你的Dispatcher会用一个线程去执行,当前线程成为主线程。
    而Invoke会使用自己当前线程来执行,不令使用其他线程。