我有這個線程,我不想在它完成一個函數時終止它。相反,我想在之後再賦予它另一個功能。 `如何讓一個線程繼續運行,而不是在函數完成時終止
t1 = new Thread(() => test());
t1.Start();
if(t1 finished the task)
{
give t1 new task for exmp test2
}
我有這個線程,我不想在它完成一個函數時終止它。相反,我想在之後再賦予它另一個功能。 `如何讓一個線程繼續運行,而不是在函數完成時終止
t1 = new Thread(() => test());
t1.Start();
if(t1 finished the task)
{
give t1 new task for exmp test2
}
如果您使用的是.NET 4或更高版本,可以使用Task
而不是一個線程,那麼你就可以實現這一點使用Task.ContinueWith()
。
下面是一個例子:
using System;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
static class Program
{
private static void Main()
{
var task = Task.Run(() => task1());
task = task.ContinueWith(antecedant => task2());
Console.WriteLine("Waiting for composite task to complete.");
task.Wait();
Console.WriteLine("Composite Task completed.");
}
private static void task1()
{
Console.WriteLine("Starting task 1");
Thread.Sleep(2000);
Console.WriteLine("Ending task 1");
}
private static void task2()
{
Console.WriteLine("Starting task 2");
Thread.Sleep(2000);
Console.WriteLine("Ending task 2");
}
}
}
如果使用這種方法,你不必等待第一個任務分配給它另外一個之前完成。
你的問題是什麼? –