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毫秒

    效率高低很明显.

  • 相关阅读:
    PAT Basic 1077 互评成绩计算 (20 分)
    PAT Basic 1055 集体照 (25 分)
    PAT Basic 1059 C语言竞赛 (20 分)
    PAT Basic 1072 开学寄语 (20 分)
    PAT Basic 1049 数列的片段和 (20 分)
    蓝桥杯BASIC-13 数列排序
    蓝桥杯入门——3.序列求和
    蓝桥杯入门——2.圆的面积
    蓝桥杯入门——1.Fibonacci数列
    树的总结(遍历,BST,AVL原型,堆,练习题)
  • 原文地址:https://www.cnblogs.com/hbhbice/p/1782190.html
Copyright © 2011-2022 走看看