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( " 终止工作线程调用此静态方法 " );
}
}
}