zoukankan      html  css  js  c++  java
  • 【插件式框架探索系列】使用多UI线程提升性能

    了解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
  • 相关阅读:
    磁盘管理
    TCP/IP四层模型
    OSI七层模型详解
    kvm虚拟机
    mount 文件挂载
    ORA-01017: 用户名/口令无效; 登录被拒绝
    mybatis配置文件形式
    Spring+mybatis整合
    xmlBean学习二
    xmlBean学习一
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/8961610.html
Copyright © 2011-2022 走看看