• .net 利用委托和线程解决窗体假死


    利用线程解决窗口假死

    基本理论:

    1,.net2.0以后,CLR默认不允许以非UI线程访问控件。

    在Framework1.x中,CLR允许应用程序以跨线程的方式运行,而在Framework2.0及以后版本中,System.Windows.Form.Control新增了CheckForIllegalCrossThreadCalls属性,它是一个可读写的bool常量,标记我们是否需要对非UI线程对控件的调用做出检测。如果指定true,当以其他线程访问UI,CLR会跑出一个”InvalidOperationException:线程间操作无效,从不是创建控件***的线程访问它”;如果为false,则不对该错误线程的调用进行捕获,应用程序依然运行。

    窗体阻塞分为两种情况。

    1,一种是在UI线程上调用耗时较长的操作,例如访问数据库,这种阻塞是UI线程被占用所导致,可以通过delegate.BeginInvoke的异步编程解决;

    2,另一种是窗体加载大批量数据,例如向ListView、DataGridView等控件中添加大量的数据。

    多线程和异步:

    异步和多线程是练个概念

    多线程是多个任务同时处理。

    异步值得是:例如:A在买东西,B店员需要去拿东西给A看,这个时候可以A继续看东西,而B去拿东西.等待B拿到后通知A.这个过程A是可以继续工作,在B完成后通知A。异步的实现还是依赖于多线程,因为有异步回调。

      异步回调:

    
    
    
    
  • 相关阅读:
    git操作详解
    藏医诊疗管理系统
    广告的转化率预估
    python字符串及其内置函数详解
    python数据类型和运算符及运算符的优先级
    lunix常用命令
    返回结果的HTTP状态码
    简单的http协议
    git 上传项目到分支
    安装及使用webpack
  • 原文地址:https://www.cnblogs.com/canbefree/p/3496202.html
Copyright © 2020-2023  润新知