zoukankan      html  css  js  c++  java
  • WinForm Vs WPF, COM/COM+ Vs .Net Assembly, COM/COM+ in ASP.Net, ... ...

    WinForm Vs WPF

    XAML的先进之处在哪里?

    XAML
    个人觉得XAML应该是WPF中比较划时代的东东。通过XAML,我们可以用文本的方式描述复杂的Object Graph。通过Command,Routing Event等机制,界面设计人员和程序员有比较清楚的界限。

    Dependency Property
    在WinForm开发中,经常碰到的问题就是一个控件的值变了,其他控件也会跟着改变。解决办法,要不是通过写代码,要不是通过数据绑定,前者是界面和代 码没法分开,后者还不够灵活。而WPF在这方面通过XAML可以简单的把相关的属性联系起来,通过Extension可以实现复杂的绑定关系。

    解决Window Handle问题
    WinForm每个控件都是一个小窗口,会使用一个Window handle,可能会碰到Out of Memory"Error Create Window handle",而导致程序退出。 WPF彻底改变了控件显示的模式,控件不在使用窗口,也就不会占用Window handle。理论上,如果一个WPF只有一个主窗口的话,WPF只会使用一个Window handle(如果忽略用于Dispatcher的隐藏窗口的话)。所以WPF GUI程序不会出现Window handle不够用的情况。

    多线程的处理

    WinForm程序开发时,最头疼的一个问题就是,worker线程修改控件的属性而导致程序崩溃,而且这种非法操作并不是每次都失败。WinForm控件提供了InvokeRequired属性来判断当前线程是不是控件创建线程。问题是当控件树很深是,这个属性会比较慢。
    WPF开始设计的时候,就考虑到了多线程的问题。大部分的WPF类都继承于DispatcherObjectDispatcherObject实际就是对Dispatcher的一个简单封装。Dispatcher提供了类似InvokeRequired的方法(CheckAccess)。这个方法只是比较线程的ID,所以会很快。另外,Dispatcher提供了优先队列,异步调用,Timer等功能,简化了开发多线程GUI程序。


    to be ...
  • 相关阅读:
    C# 操作配置文件
    C# Excel操作类
    没有找到 mspdb100.dll 的解决办法
    工厂方法模式
    .Net互操作2
    The certificate used to sign “AppName” has either expired or has been revoked. An updated certificate is required to sign and install the application解决
    手机抓包xcode自带命令行工具配合wireshark实现
    expecting SSH2_MSG_KEX_ECDH_REPLY ssh_dispatch_run_fatal问题解决
    使用ssh-keygen设置ssh无密码登录
    远程复制文件到服务器
  • 原文地址:https://www.cnblogs.com/silva/p/1454285.html
Copyright © 2011-2022 走看看