请教一个多线程问题 多线程thread 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为你的for循环 中不是把number赋值给textbox或者其它控件 1、“经常都遇到这样的错误:调用线程无法访问此对象,因为另一个线程拥有该对象。”出现这样的情况说明在线程里调用了控件对象,此时的解决方法就是调用控件对象的Dispatcher.Invoke方法2、“为什么这里没有报这样的错呢?”你这里的线程里没有调用控件对象,如果你把这段代码改成下面这样就会出问题了static void ThreadPingProc() { for (int i = 0; i < 900000000;i++ ) { Number++; Button.Content=Number; //这样就会提示“调用线程无法访问此对象,因为另一个线程拥有该对象” Button.Dispatcher.Invoke(() =>Button.Content=Number); //正确的做法 } } 正常情况本来就是可以访问的,只是这里会出现同时访问,所以number的值是不可靠的。至于你说的报错,楼上的说了,这个是由于winfrom设计不充许其它线程操作UI线程的东西,所以要用委托等方式来操作。 因为num并不是UI,主线程并不拥有num,当然子线程也并不拥有它num是个全局静态变量,任何线程都可以访问它,但是并不拥有它你想让线程对Num操作的过程中,按钮无法获取它的值,可以加Lock 怎样把日历控件获取的时间2012/4/3换成2012-4-3,我存进数据库的要后者的格式? 新手求助,窗口中有2个datagridview,如何实现‘删除选中的记录’ 如何递归写菜单 SharpZipLib 压缩、解压缩出现中文乱码,急救! 想请问大侠几个三层结构的问题,谢谢。 C#异步socket问题,求讲解 vs2010怎么样设置当鼠标移动到某个控件上面时候显示控件名称? 串行通讯 如何将c#代码编译成无需库文件的exe? 两个星期学c#能够学得怎么样啊??!!!! 请教大神关于int转换为string的问题 关于 list 求交集, 高手请进了……
出现这样的情况说明在线程里调用了控件对象,此时的解决方法就是调用控件对象的Dispatcher.Invoke方法2、“为什么这里没有报这样的错呢?”
你这里的线程里没有调用控件对象,如果你把这段代码改成下面这样就会出问题了static void ThreadPingProc()
{
for (int i = 0; i < 900000000;i++ )
{
Number++;
Button.Content=Number; //这样就会提示“调用线程无法访问此对象,因为另一个线程拥有该对象”
Button.Dispatcher.Invoke(() =>Button.Content=Number); //正确的做法
}
}