zoukankan      html  css  js  c++  java
  • 比较DoEvents()与refresh()和两个都不使用的效率

    用一个循环来验证(100000次),以下是代码.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsAppDoEvents
    {
        
    public partial class Form1 : Form
        {
            
    public Form1()
            {
                InitializeComponent();
            }

            
    private void button1_Click(object sender, EventArgs e)
            {
                label1.Text 
    = DateTime.Now.ToLongTimeString() +"  "+ DateTime.Now.Millisecond.ToString();
                
    for (int q = 0; q < 100000; q++)
                {

                    textBox1.Text 
    = q.ToString();
                    
    //Application.DoEvents();//实时响应文本框中的值
                }
                label3.Text 
    = DateTime.Now.ToLongTimeString() + "  " + DateTime.Now.Millisecond.ToString();
            }

            
    private void button2_Click(object sender, EventArgs e)
            {
                label2.Text 
    = DateTime.Now.ToLongTimeString() + "  " + DateTime.Now.Millisecond.ToString();
                
    for (int q = 0; q < 100000; q++)
                {

                    textBox2.Text 
    = q.ToString();
                    Application.DoEvents();
    //实时响应文本框中的值
                    
                }
                label4.Text 
    = DateTime.Now.ToLongTimeString() + "  " + DateTime.Now.Millisecond.ToString();
            }

            
    private void button3_Click(object sender, EventArgs e)
            {
                label5.Text 
    = DateTime.Now.ToLongTimeString() + "  " + DateTime.Now.Millisecond.ToString();
                
    for (int q = 0; q < 100000; q++)
                {

                    textBox3.Text 
    = q.ToString();
                    
    //Application.DoEvents();//实时响应文本框中的值
                    textBox3.Refresh();
                }
                label6.Text 
    = DateTime.Now.ToLongTimeString() + "  " + DateTime.Now.Millisecond.ToString();
            }

        }
    }

    效果图如下:

    第一个用了3875毫秒

    第二个用了14078毫秒

    第三个用了12000毫秒

    效率高低很明显.

  • 相关阅读:
    第二十次CSP考试有感
    chan数据结构实现原理
    记一次udp端口数据流过程
    Envoy 部署类型
    后K8S时代的微服务
    ESP32-使用有刷直流电机笔记
    ESP32-使用ADC笔记
    网络安全黑白名单设置
    网络安全并发数限制与连接频率限制
    apache与nginx服务器启用https功能
  • 原文地址:https://www.cnblogs.com/hbhbice/p/1782190.html
Copyright © 2011-2022 走看看