会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
即日启程
博客园
首页
新随笔
联系
订阅
管理
.net 多线程调用UI元素问题总结
考虑到用户的操作体验,我们往往需要将需要时间较长的操作放到另一个线程中进行异步处理。
看代码
Code
private
void
button1_Click(
object
sender, EventArgs e)
{
Thread testThread
=
new
Thread(
new
ThreadStart(TestInovke));
testThread.Start();
}
private
void
TestInovke()
{
int
nIndex
=
0
;
while
(nIndex
<
10
)
{
Thread.Sleep(
100
);
//
操作数据等需要时间较长的操作
nIndex
++
;
textBox1.Text
=
nIndex.ToString();
}
}
上面的代码在运行中就会不定时的出现异常。
换成下面的调用方式就不会有问题。
Code
private
void
button1_Click(
object
sender, EventArgs e)
{
Thread testThread
=
new
Thread(
new
ThreadStart(TestInovke));
testThread.Start();
}
private
void
TestInovke()
{
int
nIndex
=
0
;
while
(nIndex
<
10
)
{
Thread.Sleep(
100
);
//
操作数据等需要时间较长的操作
nIndex
++
;
PutText(nIndex);
}
}
private
void
PutText(
int
nIndex)
{
if
(
this
.InvokeRequired)
{
this
.Invoke(
new
Action
<
int
>
(PutText), nIndex);
return
;
}
textBox1.Text
=
nIndex.ToString();
}
posted @
2009-03-24 17:31
小围
阅读(
157
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告