using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;namespace SubThread
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("子线程启动.停止.终止.阻塞综合演示...");
            SubThread SThread = new SubThread();
            Thread ThreadS = new Thread(new ThreadStart(SThread.SubThreadFunc));            Console.WriteLine("子线程启动...");
            
            ThreadS.Start();            Console.WriteLine("子线程状态 {0}", ThreadS.ThreadState);            Thread.Sleep(1000);
            Console.WriteLine("主线程睡眠1秒..");            ThreadS.Abort();
            Console.WriteLine();
            Console.WriteLine("子线程状态 {0}",ThreadS.ThreadState);
            Console.WriteLine("子线程终止..");
            Console.WriteLine("SThread.SubThreadFunc被终止..");            try
            {
                ThreadS.Start();
                Console.WriteLine("尝试启动SThread.SubThreadFunc线程..");
            } 
            catch (ThreadStateException ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine("SThread.SubThreadFunc已经终止线程不能重新被启动");
            }            Console.ReadKey();
        }
    }    public class SubThread
    {
        public void SubThreadFunc()
        {
            int i;
            i = 0;
            do
            {
                i = i + 1;
                Console.WriteLine("子线程正在运行...{0}",i);
            } while (1 == 1);
        }
    }
}请问一下这里为什么线程会终止?当主线程睡眠一秒的时候, 子线程开始运行.运行的话,不是只运行 SubThread类的SubThreadFunc方法吗为什么会运行到Main函数的 ThradS.Abort()来终止?
关于线程的执行方式. 可以详细说说吗
谢谢.

解决方案 »

  1.   

    这才是线程!!主线程创建子线程后,主线程并没有waitone开始子线程后,主线程继续执行。
      

  2.   


    那就是主线程执行到ThreadS.Abort(); 这一步
    然后就结束了. 子线程只执行了一秒是这样吧?
    刚接触.见谅.
      

  3.   

    多线程就是多个线程并发执行啊,表面上看是同时执行的,其实如果你看过操作系统的话,他们还是轮流使用CPU的,只是时间太短,以至于无法感觉到。可以找本多线程编程的书和操作系统的书看看。