1.
//输出跟踪信息
Trace.WriteLine()
将有关跟踪的信息写入Listeners集合中的跟踪侦听器
在调试和release模式都输出!默认是写到输出 窗口的,也可以指定写到指定文件,或系统日志中!
//输出调试信息
Debug.WriteLine()将有关调试的信息写入Listeners集合中的跟踪侦听器 。只有调试的时候才输出。
2.线程间操作无效: 从不是创建控件 textBoxStaus 的线程访问它。使用【不调试模式运行】会正常,而【调试模式运行】会报错。
问题的原因是net2.0以后拒绝访问空间,避免空间造成死锁,以前Control.CheckForIIegalCrossThreadCalls=false,现在默认为true。
解决的方法有:
(1)在窗体构造函数中写Control.CheckForIIegalCrossThreadCalls=true;
(2)使用Invoke等委托函数。
private void change()
{
this.label1.Text = "已发生变化";
}
private void button1_Click(object sender, EventArgs e) //按钮事件
{
Thread cha = new Thread(new ThreadStart(change));
cha.Start();
}
错误提示: 未处理 System.InvalidOperationException
Message="线程间操作无效: 从不是创建控件“label1”的线程访问它。"
解决方法:
private void change()
{
this.label1.Text = "已发生变化";
}
private void threadchange() //通过委托处理,MSDN上又很详细用法的说明
{
MethodInvoker In = new MethodInvoker(change);
this.BeginInvoke(In);
}
private void button1_Click(object sender, EventArgs e)
{
Thread cha = new Thread(new ThreadStart(threadchange));
cha.Start();
}
参考:http://www.cnblogs.com/baiefjg/archive/2009/6/14.html
源代码:http://download.csdn.net/detail/chs007chs/7327863
最后欢迎大家访问我的个人网站: 1024s