了解WPF线程模型的都知道,UI线程负责呈现和管理UI,而UI元素(派生自

DispatcherObject)只能由创建该元素的线程来访问,这就导致了一些耗时的UI操作将影

响到整个应用程序性能,未响应及漫长的等待有时会令人抓狂,而UI线程一度成为了不可

越逾的鸿沟。
对于框架来说,一个插件的行为不应该影响到其它插件及整个平台的稳定性,后来在看了

《Running WPF Application with Multiple UI Threads》《DispatcherObject与WPF线

程模型》两篇文章后,思维一下子就打开了,前一篇讲的是在WPF应用程序中使用多个UI线

程,如果每个独立的插件都处于不同的UI线程,自然性能会有所提升,而后一篇则深入的

分析了win32的消息循环和wpf的线程模型,非常透彻。
下面是创建新UI线程的方法

Thread thread = new Thread(() =>
{
    Window win = new Window { Title = string.Format("Thread id:{0}", Thread.CurrentThread.ManagedThreadId) };
    win.Show();
    Dispatcher.Run();
});
thread.IsBackground = true;
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

如此Window将会在新的线程中运行,Dispatcher.Run()使当前线程进入消息循环,而设置线程的IsBackground为True是为了保证在程序退

出时自动回收该线程,否则会出现进程驻留问题。

谨以此记录成长的脚步,同时和大家一起分享快乐。
 
 
http://www.cnblogs.com/huihui0630/archive/2010/06/23/1763962.html

最新文章

  1. 学习笔记---C/C++语法
  2. Text Justification [LeetCode]
  3. Number of Islands
  4. H5页开发规范/通用规范
  5. 《Programming WPF》翻译 第7章 6.视频和3-D
  6. Eclips入门教程
  7. 小白也能看懂的插件化DroidPlugin原理(二)-- 反射机制和Hook入门
  8. iOS开发引入第三方类库的问题
  9. bzoj [HNOI2008]Cards
  10. 《Multiplayer Game Programming》阅读笔记
  11. 【Selenium-WebDriver自学】Selenium-IDE用户扩展(七)
  12. Dubbo创建提供者&消费者工程
  13. 20145310 Exp7 网络欺诈技术防范
  14. idea 版本控制忽略文件、文件夹设置
  15. 洛谷P2017晕牛
  16. [Luogu2622]关灯问题$||$(状压$DP$)
  17. 【Jmeter测试】BeanShell介绍和使用
  18. 433. Number of Islands【LintCode java】
  19. 【Supervised Learning】支持向量机SVM (to explain Support Vector Machines (SVM) like I am a 5 year old )
  20. 关于Python导入其他目录中的类

热门文章

  1. 创建型模式(五) 原型模式(Prototype)
  2. P4357 [CQOI2016]K远点对
  3. luogu 2312 解方程 乱搞+取模
  4. mysql创建账号、授权、数据导出、导入
  5. 原创:C++实现的可排序的双向链表
  6. golang-flag - 命令行参数解析
  7. JSP了解点基础
  8. Java 合并PDF文件
  9. 使用Android的日志工具Log
  10. MySQL七种join理论