在自动化任务中,一般需要一个线程在完成任务之前禁止再开同样的任务。要考虑其安全性。一下分别用Task类和Tread类来分别取例。
一、Task Class. 应该是.Net4.0之后的版本才能使用。之前的版本没有。
1、打开线程
Task TestTask = new Task(new Action(TestThread));
TestTask.Start(); //当然你可以用其他方式创建和开启
2、判断该任务是否已经完成,完成后重新打开。此处使用自带的IsCompleted()实现。简单无脑,个人最喜欢这一种方式。
if (TestTask.IsCompleted)
{
TestTask.Start();
}
else
{
Console.WriteLine("任务未完成");
}
Console.ReadLine();
二、Thread Class. 比较古老的类,以前的老机器见的蛮多的。和以上类似,直接贴完全的代码。使用IsAlive()方法便可。不过Tread比较麻烦就是线程终止后得new一个新的对象。
Thread TestTask = new Thread(TestThread);
TestTask.Start();
for (int i = 0; i < 25; i++)
{
if (!TestTask.IsAlive)
{
TestTask.Abort();
TestTask = new Thread(TestThread);
TestTask.Start();
}
else
{
Console.WriteLine("任务未完成");
}
Thread.Sleep(1000);
}
TestTask.Abort();
Console.ReadLine();
三、测试用的代码也贴了上来,无非就是获取线程ID作为验证
static void TestThread()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i.ToString() + ":线程" + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000);
}
}