基础篇-怎样创建一个线程

来源:互联网 发布:苹果5怎么用3g网络 编辑:程序博客网 时间:2024/05/01 14:51

 


怎样创建一个线程

我只简单列举几种常用的方法,详细可参考.Net多线程总结(一)

一)使用Thread类

ThreadStart threadStart=new ThreadStart(Calculate);//通过ThreadStart委托告诉子线程讲执行什么方法,这里执行一个计算圆周长的方法
Thread thread=new Thread(threadStart);
thread.Start(); 
//启动新线程

public void Calculate(){
double Diameter=0.5;
Console.Write(
"The perimeter Of Circle with a Diameter of {0} is {1}"Diameter,Diameter*Math.PI);
}

   

二)使用Delegate.BeginInvoke

delegate double CalculateMethod(double Diameter); //申明一个委托,表明需要在子线程上执行的方法的函数签名
static CalculateMethod calcMethod = new CalculateMethod(Calculate);//把委托和具体的方法关联起来
static void Main(string[] args)
{
//此处开始异步执行,并且可以给出一个回调函数(如果不需要执行什么后续操作也可以不使用回调)
calcMethod.BeginInvoke(5, new AsyncCallback(TaskFinished), null);
Console.ReadLine();
}

//线程调用的函数,给出直径作为参数,计算周长
public static double Calculate(double Diameter)
{
    
return Diameter * Math.PI;
}

//线程完成之后回调的函数
public static void TaskFinished(IAsyncResult result)
{
    
double re = 0;
    re = calcMethod.EndInvoke(result);
    Console.WriteLine(re);
}

 

三)使用ThreadPool.QueueworkItem

WaitCallback w = new WaitCallback(Calculate);
//下面启动四个线程,计算四个直径下的圆周长
ThreadPool.QueueUserWorkItem(w, 1.0);
ThreadPool.QueueUserWorkItem(w, 
2.0);
ThreadPool.QueueUserWorkItem(w, 
3.0);
ThreadPool.QueueUserWorkItem(w, 
4.0);
public static void Calculate(double Diameter)
{
return Diameter * Math.PI;
}


0 0
原创粉丝点击