您的位置:首页 > 其它

.Net线程足迹(三)——IsAlive属性

2010-04-29 16:25 519 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace ThreadDemo
{
class Program
{
static void Main(string[] args)
{
string threadState;
Thread t = new Thread(ThreadState.WorkerFunction);
t.Start();
while (t.IsAlive)
{
Console.WriteLine("Still waiting.I'm going back to sleep.");
Thread.Sleep(200);
}
threadState = t.ThreadState.ToString();
Console.WriteLine("ThreadState is "+threadState);
Console.ReadLine();
}
}

public class ThreadState
{
public static void WorkerFunction()
{
string threadState;

for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
{
threadState = Thread.CurrentThread.ThreadState.ToString();
Console.WriteLine("Worker:"+threadState);
}
}
Console.WriteLine("Worker Function Complete");
}
}
}


输出:

Still waiting.I'm going back to sleep.
Worker:Running
Worker:Running
Worker:Running
Worker:Running
Worker:Running
Worker Function Complete
ThreadState is Stopped

Main()方法继续与新线程一起执行,因为处理器在这两者之间切换。然后,使用新建线程的IsAlive属性,确定线程是否还在执行。继续测试这个变量,当工作线程处于激活状态时,主线程将继续睡眠200毫秒,然后唤醒主线程,并测试工作线程是否仍处于激活状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: