读书人

请教这种轮询功能如何实现

发布时间: 2012-06-01 16:46:36 作者: rapoo

请问,这种轮询功能怎么实现
private void button26_Click(object sender, EventArgs e)
{
work();
while(i ==0) //轮询
{
textBox1.Text = i.Tostring();
}
}
private void work()
{
//很多代码,不知道要执行多长时间
i = 0;
}


请问,上面的代码,执行work方法不知时间有多长,如何轮询,使得i = 0的时候,执行textBox1.Text = i.Tostring();

[解决办法]
本身work是同步的方法,也就是

while(i ==0) 的时候,work已经执行完了。干嘛要轮询,多此一举。
[解决办法]
目前的代码 work 方法执行时是阻塞的,会造成界面失去响应,下面的轮询也没意义,假如你是想等 work 完了修改下 textBox1.Text 值,可以考虑使用子线程执行 work

C# code
private void button26_Click(object sender, EventArgs e){    ThreadPool.QueueUserWorkItem(param =>    {        work();        this.Invoke((MethodInvoker)(() => textBox1.Text = i.Tostring()));    });}
[解决办法]
探讨

引用:

目前的代码 work 方法执行时是阻塞的,会造成界面失去响应,下面的轮询也没意义,假如你是想等 work 完了修改下 textBox1.Text 值,可以考虑使用子线程执行 work
C# code
private void button26_Click(object sender, EventArgs e)
{
ThreadPool.QueueUserW……

读书人网 >C#

热点推荐