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()来终止?
关于线程的执行方式. 可以详细说说吗
谢谢.
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()来终止?
关于线程的执行方式. 可以详细说说吗
谢谢.
那就是主线程执行到ThreadS.Abort(); 这一步
然后就结束了. 子线程只执行了一秒是这样吧?
刚接触.见谅.