关于Control.Dispatcher.BeginInvoke卡界面_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 关于Control.Dispatcher.BeginInvoke卡界面

关于Control.Dispatcher.BeginInvoke卡界面

 2017/8/24 21:08:46  Shayne Chow  程序员俱乐部  我要评论(0)
  • 摘要:Control.Dispatcher.BeginInvoke里的逻辑由UI线程执行,如果内部包含耗时操作就会造成界面卡住。Action.BeginInvoke里的逻辑,将在一个新开的线程中执行,而不是UI线程,所以不会造成界面卡住。但其内部不能直接对UI操作,所以若需要访问UI,需要将访问UI的那部分代码用Control.Dispatcher.BeginInvoke包起来,其中Control属于你要访问的UI,或者说Control与你要访问的UI在同一线程。示例:newAction((
  • 标签:

  Control.Dispatcher.BeginInvoke里的逻辑由UI线程执行,如果内部包含耗时操作就会造成界面卡住。

  Action.BeginInvoke里的逻辑,将在一个新开的线程中执行,而不是UI线程,所以不会造成界面卡住。但其内部不能直接对UI操作,所以若需要访问UI,需要将访问UI的那部分代码用Control.Dispatcher.BeginInvoke包起来,其中Control属于你要访问的UI,或者说Control与你要访问的UI在同一线程。

示例:

new Action(() =>

{

  //耗时非UI操作放这

  Control.Dispatcher.Invoke(new Action(() =>

  {

    //操作UI(同步

  }));

  Control.Dispatcher.BeginInvoke(new Action(() =>

  {

    //操作UI(异步

  }));

  //耗时非UI操作放这

}).BeginInvoke(null, null);

上一篇: 饿了么和百度外卖合并 美团外卖:一起做大外卖市场 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名