首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-06-01 
请问,这种轮询功能怎么实现private void button26_Click(object sender, EventArgs e){work()while(i 0

请问,这种轮询功能怎么实现
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……

热点排行