将线程转换为任务
Convert a Thread to a Task
我正在尝试在以下代码中使用 .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;
}
}
当任务 运行 时,文本框必须 更新 并且当 任务已终止或取消,文本框应不会更新。
并避免出现中断执行的类似消息:"The current thread is not in a single-threaded apartment"
它将用于 桌面和网络。
谢谢,各种帮助。
这是对异步任务模式的直接转换:
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 来完成更好的事情。
我正在尝试在以下代码中使用 .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;
}
}
当任务 运行 时,文本框必须 更新 并且当 任务已终止或取消,文本框应不会更新。
并避免出现中断执行的类似消息:"The current thread is not in a single-threaded apartment"
它将用于 桌面和网络。
谢谢,各种帮助。
这是对异步任务模式的直接转换:
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 来完成更好的事情。