zoukankan      html  css  js  c++  java
  • 初遇多线程

    初次接触多线程是想做一个进度条,然后让界面有一个防假死的效果。了解的不深,先浅显的记录一下:

    private Thread fThread ; //定义一个进程

    //开始进程
    private void btdoit_Click(object sender, EventArgs e)
    {
       fThread = new Thread(new ThreadStart(addinfo));//指定进程执行的函数为addinfo;
       fThread.Start();
    }

    private void addinfo()//这就是进程执行的函数了,不多记

    {

        。。。。。

    }

    使用多线程时遇到的状况:

    1、跨线程调用控件

        在调用控件前加上这个,如这里要调用ListView控件:

    先定义 private delegate void addinfoCallback();

    if (this.listViewfw.InvokeRequired)
    {
       addinfoCallback acb = new addinfoCallback(addinfo);
       this.listViewfw.Invoke(acb, new object[] { });

    }
    else
    {

         //要执行的操作

    }

    2、执行一个大的循环时,进度条值可以改变,lable的值却不能实时更改(这个应该与多线程无关,只是遇到了就顺带记录一下)

         在改变Lable或其它控件值前加上这句:

           Application.DoEvents();//这句我查了一下,说是会造成系统短暂的停顿,影响速度,需要慎用。

  • 相关阅读:
    找出水王
    第九周进度表
    [设计模式]组合模式
    [设计模式]外观模式
    [设计模式]策略模式
    [设计模式] 6个设计遵循基本原则
    [OSGI]Eclipse4.2 OSGI依赖Bundle
    [xfire]使用xfire开发webservice的简单示例
    [HTML5 Canvas学习]使用颜色和透明度
    [HTML5 Canvas学习]绘制矩形
  • 原文地址:https://www.cnblogs.com/pengdage110/p/4140421.html
Copyright © 2011-2022 走看看