比较DoEvents()与refresh()和两个都不使用的效率
2010-07-21 14:46
141 查看
用一个循环来验证(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毫秒
效率高低很明显.
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毫秒
效率高低很明显.
相关文章推荐
- 下拉刷新 SVPullToRefresh 的使用及两个比较优秀的第三方下拉刷新
- 使用diff比较两个文件夹
- 使用字节流复制文件的四种方式以及效率比较
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句。
- 使用WinMerge比较github项目两个版本之间的差异
- C# 中distinct的使用与两个类的比较
- 给定两个int a和b,不使用if-else等比较和判断运算符,请返回较大的一个数。若两数相同则返回任意一个
- 使用diff比较两个文件夹
- SQL的EXISTS与in、not exists与not in 效率比较和使用
- 使用 Diff 和 Meld 工具比较两个目录的不同处
- 使用字符串比较两个时间的大小
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句。
- ehcache与guavacache两个缓存框架的效率比较
- 使用svn diff的-r参数的来比较任意两个版本的差异
- 使用svn diff的-r参数的来比较任意两个版本的差异
- 比较两个整数的大小,不能使用 &quot;if&quot;, &quot;?:&quot;, &quot;switch&quot; 等
- 使用Python的MD5算法比较两个文件
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 使用Vim比较两个文件的内容
- 使用Red Gate Sql Data Compare 数据库同步工具进行SQL Server的两个数据库的数据比较、同步