为了账号安全,请及时绑定邮箱和手机立即绑定

c# 多线程高手进

c# 多线程高手进

墨色风雨 2018-12-07 11:48:28
1.         private Thread tr;        void Form1_Load(object sender, EventArgs e)        {            Application.DoEvents();            Thread.Sleep(5000);            List list = new List() { "c#" };            this.dataGridView1.DataSource = list;        } 2.         private Thread tr;        void Form1_Load(object sender, EventArgs e)        {            tr = new Thread(new ThreadStart(Do));            tr.IsBackground = true; tr.Name = "MyThread";            tr.Start();        }         private void Do()        {             this.Invoke                (new Action(() =>            {                 Application.DoEvents();                Thread.Sleep(2000);                List list = new List() { "c#" };                this.dataGridView1.DataSource = list;            }));  } 请问牛人这两段代码的区别。。Application.DoEvents();有什么作用??
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

当运行 Windows 窗体时,它将创建新窗体,然后该窗体等待处理事件。该窗体在每次处理事件时,均将处理与该事件关联的所有代码。所有其他事件在队列中等待。当代码处理事件时,应用程序不会响应。例如,如果将甲窗口拖到乙窗口之上,则乙窗口不会重新绘制。 如果在代码中调用 DoEvents,则您的应用程序可以处理其他事件。 例如,如果您有向 ListBox 添加数据的窗体,并将 DoEvents 添加到代码中,那么当将另一窗口拖到您的窗体上时,该窗体将重新绘制。 如果从代码中移除 DoEvents,那么在按钮的单击事件处理程序执行结束以前,您的窗体不会重新绘制
查看完整回答
反对 回复 2018-12-09
  • 2 回答
  • 0 关注
  • 427 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信