using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace 线程的创建和启动
{
public class B
{
//Main()方法总是.net应用程序的第一个线程
public static void Main()
{
Console.WriteLine("线程的创建和启动示例");
A a = new A();
//构造函数的参数是一个委托,该委托代表a.ff方法的细节,即线程开始执行的方法
//你可以先实例化该委托,然后传递到该构造函数中实例化该Thread对象,这里一步成
Thread s1 = new Thread(new ThreadStart(a.ff));//实例方法
s1.Start();//启动一个线程
Console.WriteLine("启动新线程ff()方法后,被Main()线程调用");
Thread s2 = new Thread(new ThreadStart(A.gg));//静态方法
s2.Start();//启动另一个线程
Console.WriteLine("启动新线程gg()方法后,被Main()线程调用");
Console.ReadLine();
}
}
public class A
{
public void ff()//线程启动时调用此方法
{
Console.WriteLine("A.ff()方法在另一个线程上运行");
Thread.Sleep(3000);//将线程阻塞一定时间
Console.WriteLine("终止工作线程调用此实例方法");
}
public static void gg()
{
Console.WriteLine("A.gg()方法在另一个线程上运行");
Thread.Sleep(5000);//将线程阻塞一定时间
Console.WriteLine("终止工作线程调用此静态方法");
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace 线程的创建和启动
{
public class B
{
//Main()方法总是.net应用程序的第一个线程
public static void Main()
{
Console.WriteLine("线程的创建和启动示例");
A a = new A();
//构造函数的参数是一个委托,该委托代表a.ff方法的细节,即线程开始执行的方法
//你可以先实例化该委托,然后传递到该构造函数中实例化该Thread对象,这里一步成
Thread s1 = new Thread(new ThreadStart(a.ff));//实例方法
s1.Start();//启动一个线程
Console.WriteLine("启动新线程ff()方法后,被Main()线程调用");
Thread s2 = new Thread(new ThreadStart(A.gg));//静态方法
s2.Start();//启动另一个线程
Console.WriteLine("启动新线程gg()方法后,被Main()线程调用");
Console.ReadLine();
}
}
public class A
{
public void ff()//线程启动时调用此方法
{
Console.WriteLine("A.ff()方法在另一个线程上运行");
Thread.Sleep(3000);//将线程阻塞一定时间
Console.WriteLine("终止工作线程调用此实例方法");
}
public static void gg()
{
Console.WriteLine("A.gg()方法在另一个线程上运行");
Thread.Sleep(5000);//将线程阻塞一定时间
Console.WriteLine("终止工作线程调用此静态方法");
}
}
}