zoukankan      html  css  js  c++  java
  • C# 多线程 注意问题 总结

    目前,我除自己为客户开发项目外,也要诊断一些客户的程序,因为他们在使用我们公司提供的开发包。

    一些程序为了提供多线程支持,经常使用的是消息,timer,thread.

    消息:

      利用窗口消息泵来实现线程间通信。因为消息泵是针对UI线程的容器,所以可以理解成在UI线程上同步。

         好处是,程序相对清晰明了,通过消息名称,很容易查到处理过程;

         问题是,计算量大时,需要注意消息频率,否则造成界面假死。

    timer:

         目前,大多是用form timer。

         好处是,自动循环触发。

         问题是,客户经常忽略timer间隔变化问题。如果间隔时间很小,有可能kick事件触发的函数没有运行完,新的事件又被触发过来。最简单的方法是在触发处理函数上,stop timer ,结束前再启动timer。

    thread:

        好处是,时间和空间一切由自己管理。

        问题是,第一要注意同步,第二是怎样调用UI控件方法。

    public void changeStatus()

    {

           if (this.InvokeRequired)    //true:当前是自建的线程; false:直接操作吧资源本来就是你的。     

          { 

        //我知道该方法不是我实现的也不需要我实现,我要操控控件,就让控件自己去做吧。

        this.Invoke(new MethodInvoker(this.changeStatus));       //调用UI控件的方法。

                return;       

            }
            progressBar1.Value = _progrssStatus;

            label1.Text = _progrssStatusinfo;

    }

    很难看是吧?我在自己的工程中使用过1次,就再没用过。

  • 相关阅读:
    车载OS盘点及特点分析一:车载OS几大系统介绍
    CTF常用软件/工具
    汽车软件产业研究报告(2020年)
    高级加密标准(AES)分析
    工具 | CTP、SimNow、NSight、快期
    CTF之图片隐写术解题思路
    V2X和车路协同研究:5G V2X将成为数字座舱标配
    腾讯安全正式发布《IoT安全能力图谱》
    Microsoft Remote Desktop Beta 下载地址
    密码学初探|加密模式
  • 原文地址:https://www.cnblogs.com/lugesot/p/2048660.html
Copyright © 2011-2022 走看看