返回顶部
首页 > 资讯 > 精选 >C#中怎么利用委托实现异步调用
  • 734
分享到

C#中怎么利用委托实现异步调用

2023-06-17 23:06:57 734人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关C#中怎么利用委托实现异步调用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。委托实现C#异步调用的步骤:定义委托。将要进行异步调用的方法“实例化”到定义的委托。在

这篇文章将为大家详细讲解有关C#中怎么利用委托实现异步调用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

委托实现C#异步调用的步骤:

定义委托。

将要进行异步调用的方法“实例化”到定义的委托。

在委托上调用BeginInvoke方法。其中,BeginInvoke的参数由三个部分构成。***部分:所定义的委托的函数签名。

第二部分:希望调用的回调函数的委托。第三部分:自定义委托的实例(该实例将会在回调函数中的IAsyncResult的AsyncRState属性中重构出我们在步骤2中定义的委托实例,并借助这个实例来调用EndInvoke方法。)

如果我们希望在当前线程来处理异步调用的结果,则可以使用BeginInvoke方法返回一个IAsyncResult实例(例如ar)

并在当前线程等待。如果我们希望在异步线程中通过回调函数来处理结果,则我们需要在3中传递一个回调委托,并在该处理中调用EndInvoke方法。

委托实现C#异步调用的一段实例:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  using System.Threading;   namespace property  {  public class DelegateClass  {  public delegate int AsyncSampDelegate();  public event AsyncSampDelegate delEvent;   public void Run()  {  Console.WriteLine("The Run Thread is {0}",   Thread.CurrentThread.GetHashCode());  foreach (AsyncSampDelegate del in  delEvent.GetInvocationList())  {  del.BeginInvoke(new AsyncCallback(ReturnAsync), del);  }  }   public void ReturnAsync(IAsyncResult ar)  {  //获得调用委托实例的引用  AsyncSampDelegate del = (AsyncSampDelegate)ar.AsyncState;  int result = del.EndInvoke(ar);  Console.WriteLine("The result is {0},  The Thread is {1}", result, Thread.CurrentThread.GetHashCode());  }  }   public class FirstSubscribe  {  private int myCount = 0;   public void AddFunToDel(DelegateClass tmpDel)  {  tmpDel.delEvent+=new DelegateClass.  AsyncSampDelegate(FirstFun);  }    public int FirstFun()  {  return myCount++;  }  }   public class SecondSubscribe  {  private int myCount = 0;   public void AddFunToDel(DelegateClass tmpDel)  {  tmpDel.delEvent+=new DelegateClass.  AsyncSampDelegate(SecondFun);  }   public int SecondFun()  {  return myCount += 2;  }  }   public class App  {  static void Main()  {  DelegateClass delClass = new DelegateClass();  FirstSubscribe fs = new FirstSubscribe();  SecondSubscribe ss = new SecondSubscribe();   fs.AddFunToDel(delClass);  ss.AddFunToDel(delClass);   Console.WriteLine("The Main Thread is {0}",   Thread.CurrentThread.GetHashCode());  delClass.Run();  Console.Read();  }  }  }

关于C#中怎么利用委托实现异步调用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: C#中怎么利用委托实现异步调用

本文链接: https://lsjlt.com/news/294393.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中怎么利用委托实现异步调用
    这篇文章将为大家详细讲解有关C#中怎么利用委托实现异步调用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。委托实现C#异步调用的步骤:定义委托。将要进行异步调用的方法“实例化”到定义的委托。在...
    99+
    2023-06-17
  • C#异步委托之委托使用的时机有哪些
    这篇文章将为大家详细讲解有关C#异步委托之委托使用的时机有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在我的印象里,委托经常出现在三个场合(也许更多,我水平有限)。C#异步委托之委托使用的时机1、事...
    99+
    2023-06-18
  • C#中怎么实现异步调用
    C#中怎么实现异步调用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先,C#异步调用出来的新线程,必须回收,不回收是浪费资源的可耻行为,.NET也是不允许的,所以你别想钻...
    99+
    2023-06-17
  • C#中怎么实现同步调用和异步调用
    今天就跟大家聊聊有关C#中怎么实现同步调用和异步调用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#委托的Invoke方法用来进行同步调用。同步调用也可以叫阻塞调用,它将阻塞当前线...
    99+
    2023-06-17
  • C++怎么用boost.signal实现多播委托
    本篇内容主要讲解“C++怎么用boost.signal实现多播委托”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么用boost.signal实现多播委托”吧!boost.signal提供...
    99+
    2023-07-02
  • 怎么在c#中利用委托事件实现多线程通信
    本篇文章为大家展示了怎么在c#中利用委托事件实现多线程通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在研究c# 线程之间通信时,发现传统的方法大概有三种:全局变量,由于同一进程下的多个进程之间共...
    99+
    2023-06-14
  • C#委托实现的步骤是什么
    C#委托的实现步骤如下:1. 定义委托类型:使用`delegate`关键字定义一个委托类型,指定委托的返回值类型和参数列表。2. 创...
    99+
    2023-09-09
    C#
  • C#异步委托和多线程怎么理解
    这篇文章主要讲解了“C#异步委托和多线程怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#异步委托和多线程怎么理解”吧!关于这个问题,我想很多初学者跟我一样有很多疑问吧。下面我说的内...
    99+
    2023-06-18
  • C#如何使用异步委托开启线程
    这篇文章主要为大家展示了“C#如何使用异步委托开启线程”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#如何使用异步委托开启线程”这篇文章吧。异步委托开启线程 public ...
    99+
    2023-06-17
  • C#委托怎么使用
    这篇文章主要介绍了C#委托怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#委托怎么使用文章都会有所收获,下面我们一起来看看吧。1、什么是委托从数据结构来讲,委托是和类一样是一种用户自定义类型。委托是方...
    99+
    2023-06-29
  • C#的Func委托怎么实现
    本篇内容介绍了“C#的Func委托怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、什么是Func委托Func委托代表有返回类型的委...
    99+
    2023-06-29
  • C++用boost.signal实现多播委托
    boost.signal提供了一个多播委托机制,通过它可以非常容易的实现观察者模式: void print_sum(float x, float y) { ...
    99+
    2024-04-02
  • C#中怎么利用Socket实现异步通讯
    这篇文章将为大家详细讲解有关C#中怎么利用Socket实现异步通讯,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C# Socket异步通讯客户端之主程序:using System;using...
    99+
    2023-06-17
  • C#中怎么利用AsyncResult实现异步编程
    这篇文章给大家介绍C#中怎么利用AsyncResult实现异步编程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#异步编程模式IAsyncResult概述IAsyncResult 异步设计模式通过名为 BeginOp...
    99+
    2023-06-17
  • C#中如何实现异步调用
    C#中如何实现异步调用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。.NET Framework 允许您C#异步调用任何方法。定义与您需要调用的方法具有相同签名...
    99+
    2023-06-17
  • WCF中怎么实现异步调用
    这篇文章将为大家详细讲解有关WCF中怎么实现异步调用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。随着时代的发展,异步调用在编程中是不可缺少的,这里就关于WCF异步调用简单的和大家分享一下吧...
    99+
    2023-06-17
  • VB.NET中怎么实现异步调用
    这篇文章给大家介绍VB.NET中怎么实现异步调用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。VB.NET异步调用代码示例:private delegate Sub (()sub ...
    99+
    2023-06-17
  • C#中怎么使用委托和事件
    在 C# 中,委托和事件是一种常用的机制,用于实现事件驱动的编程模型。委托是一种类型,用于存储对方法的引用,而事件是委托的一种特殊用...
    99+
    2024-03-06
    C#
  • Vue中的同步调用和异步调用怎么实现
    这篇“Vue中的同步调用和异步调用怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue中的同步调用和异步调用怎么实现...
    99+
    2023-06-28
  • C#中的委托怎么声明和使用
    这篇“C#中的委托怎么声明和使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中的委托怎么声明和使用”文章吧。如果要给方...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作