请教大神。。第一段代码和第二段代码有什么区别。。。????
1.
private void button1_Click(object sender, EventArgs e)
{
tr = new Thread(new ParameterizedThreadStart(Do));
tr.IsBackground = true;
tr.Start(this);
Application.DoEvents();
}
private void Do(object f)
{
this.Invoke(new Action(() =>
{
.........耗时操作
}));
}
2.
private void button1_Click(object sender, EventArgs e)
{
tr = new Thread(new ParameterizedThreadStart(Do));
tr.IsBackground = true;
tr.Start(this);
}
private void Do(object f)
{
this.Invoke(new Action(() =>
{
Application.DoEvents();
.............................耗时操作.....
}));
}
3.去哪里可以查看
Windows消息列表
WM_NULL = 0x0000,
WM_CREATE = 0x0001,
这些消息的中文意思??请帖网址。。感激
你在项目中用反汇编工具或者C盘查找,默认C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\ildasm.exe
打开反汇编工具加载生成程序集,双击main()里面有相关数据诸如 0x0000这样的编码,也就是磁盘中数据内存地址的反射吧。JIP根据这些查找磁盘地址
触发消息队列中排队的消息。
参考:http://q.cnblogs.com/q/47023/
第一段代码:
可能先执行耗时操作,再完成按钮点击事件,也能可能先完成按钮点击事件再执行耗时操作。
由windows调度机制决定。先执行DoEvent(),后调度开启辅助线程的为 后面 那种情况。
第二段代码:
肯定先执行完按钮点击事件,再执行耗时操作。。。详细见上面第二个链接