【C# 委托多线程简单应用】
委托基本用法(示例)
第一步:声明一个委托
public delegate void MyDelegate(string result);
第二步:创建一个委托方法
private static void MyFucToDelegate(string name)
{
Console.WriteLine(name);
// Console.ReadKey();
}
private static void Fucdelegate()
{
第三步:委托执行
MyDelegate myDelegate = new MyDelegate(MyFucToDelegate);
IAsyncResult iar = myDelegate.BeginInvoke("Hello~ start a invoked!",new AsyncCallback(callBackFuc),"回调传入的对象");
Console.WriteLine("测试");
if (iar.IsCompleted)
{
//未带返回值
myDelegate.EndInvoke(iar);
//若有string 类型返回值
//string str=myDelegate.EndInvoke(iar);
}
Console.ReadKey();
}
//委托执行完成回调
private static void callBackFuc(IAsyncResult syncresult)
{
Console.WriteLine("回调函数的参数:" + syncresult.AsyncState);
}
第四步:调用方法,执行委托方法
static void Main(string[] args)
{
//委托
Fucdelegate();
}
ThreadPoolMethod 线程池基本用法(示例)
第一步:创建一个线程池类,方法
public static class ThreadPoolMethod
{
public static void DoThreadPool()
{
for (int i = 0; i < 5; ++i)
{
ThreadPool.QueueUserWorkItem(Do,"线程状态state");
}
Console.ReadKey();
}
static void Do(Object o)
{
for (int i = 0; i < 3; i++)
Console.WriteLine("loop:{0}, thread id: {1}", i, Thread.CurrentThread.ManagedThreadId);
}
}
第二步:创建一个静态方法,调用上面类里面的方法
#region 线程池方法
private static void FucThreadPool()
{
ThreadPoolMethod.DoThreadPool();
}
#endregion
第三步:Main方法调用
static void Main(string[] args)
{
//ThreadPool线程池
FucThreadPool();
}
**可以发现,线程是并行执行的,第一次执行和第二次执行结果不一样
还没有评论,来说两句吧...