我正在尝试使用以下代码中的.Net Task。
Thread hilo;
delegate void delegado(int valor);
private void button2_Click(object sender, EventArgs e)
{
hilo = new Thread(new ThreadStart(Proceso1));
hilo.Start();
}
public void Proceso1()
{
for (int i = 1; i < 101; i++)
{
delegado MD = new delegado(Actualizar1);
this.Invoke(MD, new object[] { i });
Thread.Sleep(1000);
}
}
public void Actualizar1(int valor)
{
ProgressBar1.Value = valor;
int incremento= valor % 4;
switch (incremento)
{
case 1: lblMensaje.Text = "Estamos procesando ."; break;
case 2: lblMensaje.Text = "Estamos procesando .."; break;
case 3: lblMensaje.Text = "Estamos procesando ..."; break;
default: lblMensaje.Text = "Estamos procesando ...."; break;
}
}
当任务正在运行时,文本框必须更新,并且当任务终止或取消时,文本框应< strong>未更新。
避免中断执行的类似消息:&#34;当前线程不在单线程公寓中&#34;
它将用于 桌面和网络 。
谢谢,各种帮助。
答案 0 :(得分:2)
这是直接转换为异步任务模式:
public async void button2_Click(object sender, EventArgs e)
{
await Proceso1();
}
private async Task Proceso1()
{
for (int i = 1; i < 101; i++)
{
Actualizar1(i);
await Task.Delay(1000);
}
}
private void Actualizar1(int valor)
{
ProgressBar1.Value = valor;
int incremento = valor % 4;
switch (incremento)
{
case 1: lblMensaje.Text = "Estamos procesando ."; break;
case 2: lblMensaje.Text = "Estamos procesando .."; break;
case 3: lblMensaje.Text = "Estamos procesando ..."; break;
default: lblMensaje.Text = "Estamos procesando ...."; break;
}
}
那就是说,我不确定这是什么意思,你无法使用System.Windows.Forms.Timer来实现更好的目标。