【C# 委托多线程简单应用】

迷南。 2023-10-05 23:21 70阅读 0赞

委托基本用法(示例)

第一步:声明一个委托
  1. public delegate void MyDelegate(string result);
第二步:创建一个委托方法
  1. private static void MyFucToDelegate(string name)
  2. {
  3. Console.WriteLine(name);
  4. // Console.ReadKey();
  5. }
  6. private static void Fucdelegate()
  7. {
第三步:委托执行
  1. MyDelegate myDelegate = new MyDelegate(MyFucToDelegate);
  2. IAsyncResult iar = myDelegate.BeginInvoke("Hello~ start a invoked!",new AsyncCallback(callBackFuc),"回调传入的对象");
  3. Console.WriteLine("测试");
  4. if (iar.IsCompleted)
  5. {
  6. //未带返回值
  7. myDelegate.EndInvoke(iar);
  8. //若有string 类型返回值
  9. //string str=myDelegate.EndInvoke(iar);
  10. }
  11. Console.ReadKey();
  12. }
  13. //委托执行完成回调
  14. private static void callBackFuc(IAsyncResult syncresult)
  15. {
  16. Console.WriteLine("回调函数的参数:" + syncresult.AsyncState);
  17. }
第四步:调用方法,执行委托方法
  1. static void Main(string[] args)
  2. {
  3. //委托
  4. Fucdelegate();
  5. }

执行结果

ThreadPoolMethod 线程池基本用法(示例)

第一步:创建一个线程池类,方法

public static class ThreadPoolMethod
{

  1. public static void DoThreadPool()
  2. {
  3. for (int i = 0; i < 5; ++i)
  4. {
  5. ThreadPool.QueueUserWorkItem(Do,"线程状态state");
  6. }
  7. Console.ReadKey();
  8. }
  9. static void Do(Object o)
  10. {
  11. for (int i = 0; i < 3; i++)
  12. Console.WriteLine("loop:{0}, thread id: {1}", i, Thread.CurrentThread.ManagedThreadId);
  13. }
  14. }
第二步:创建一个静态方法,调用上面类里面的方法

#region 线程池方法
private static void FucThreadPool()
{
ThreadPoolMethod.DoThreadPool();
}
#endregion

第三步:Main方法调用
  1. static void Main(string[] args)
  2. {
  3. //ThreadPool线程池
  4. FucThreadPool();
  5. }

第一次执行结果
第二次执行结果
**可以发现,线程是并行执行的,第一次执行和第二次执行结果不一样

发表评论

表情:
评论列表 (有 0 条评论,70人围观)

还没有评论,来说两句吧...

相关阅读

    相关 线安全性的委托

    4.3 线程安全性的委托 大多数对象都是组合对象。当从头开始构建一个类,或者将多个非线程安全的类组合为一个类时, Java 监视器模式是非常有用的。但是,如果类中的各个组件都