【问题标题】:Does Dispatcher.Invoke block on the calling thread?Dispatcher.Invoke 会阻塞调用线程吗?
【发布时间】:2013-11-14 02:13:57
【问题描述】:

我想知道,在调用 Dispatcher.Invoke 时,调用线程是否会等到调度程序完成其操作...?

例如:

new Thread(() =>
{
   string x = "Yes.";
   // Invoke the dispatcher.
   Dispatcher.Invoke((Action)delegate()
   {
      // Get the string off a UI element which contains the text, "No."
      x = textBox.Text;
   });
   // Is x either ("Yes" or "No") here, or always "No"?
}).Start();

【问题讨论】:

  • 你为什么不试试呢?在调用中添加几秒钟的睡眠,在其中添加另一行,并查看它是否在完成之前击中它...
  • @Noctis 你知道吗,我现在太累了......我什至没有想到,但我想我会试一试。不过,让某人参考一些有形的文档不会有什么坏处:P
  • 没有什么比在小时候编码更重要的了,嗯?
  • 不......刚刚为你回答了你的问题......它回到了你的代码矿!

标签: c# .net wpf multithreading dispatcher


【解决方案1】:

好像会阻塞:)

看看这里:Dispatcher.Invoke from a new thread is locking my UI

这里还有一些智慧:

Invoke 是同步的,而 BeginInvoke 是异步的。操作被添加到指定 DispatcherPriority 的 Dispatcher 的事件队列中。

【讨论】:

  • #CodeMonkeysUnite。谢谢,诺克提斯。很好的发现!回到奴隶制我去。
  • 鞭打 ... :) 很高兴我能帮上忙...等等...什么??多伦多只有2130!!! 小黄人快,给这个拿些可乐和披萨!!!
  • 哈哈哈,嘿伙计,如果我一年四季都有温暖的天气,我会精力充沛!
  • Aychiuwawa ! 6-4摄氏度?我会坚持回答我 26-18 岁(加上雷暴!)的疲惫问题:)
  • 派出一些奴才!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 2013-11-16
相关资源
最近更新 更多