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