C# BeginInvoke 加 EndInvoke实现异步操作

这篇具有很好参考价值的文章主要介绍了C# BeginInvoke 加 EndInvoke实现异步操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、定义一个委托

delegate long MyDel(int first, int second);

2、 需异步操作的函数

 static int sum(int x,int y)                
 {
     Console.WriteLine("InSide Sum1");
     Thread.Sleep(1000);
     Console.WriteLine("InSide Sum2");
     return x + y;
 }

3、回调方法,在异步方法执行完后才执行 ,接收返回结果

static  void callback_(IAsyncResult iar) 
{
   Console.WriteLine("Inside CallWhenDone");
   AsyncResult ar = (AsyncResult)iar; //里氏转换,如果父类中装的是子类的对象,那么可以将这个父类转换为子类对象   
   Mydel del = (Mydel)ar.AsyncDelegate;  //通过AsyncResult类对象的AsyncDelegate属性转化为合适的Mydel委托类型
   long result = del.EndInvoke(iar);
   Console.WriteLine("The result is: {0}",result);
}

4、异步调用:文章来源地址https://www.toymoban.com/news/detail-636669.html

static void Main(string[] args)
        {
            Mydel Del = new Mydel(sum);
            Console.WriteLine("Before BeginInvoke");
            IAsyncResult iar = Del.BeginInvoke(5,6,new AsyncCallback(callback_),Del);                   //Del焕成null结果也一样
            Console.WriteLine("Doing more work in main");
            Thread.Sleep(500);
            Console.WriteLine("Done with Main.Exiting");
            Console.ReadKey();
        }

到了这里,关于C# BeginInvoke 加 EndInvoke实现异步操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#异步有多少种实现方式?

    微信群里的一个提问引发的这个问题,有同学问:C#异步有多少种实现方式?想要知道C#异步有多少种实现方式,首先我们要知道.NET提供的执行异步操作的三种模式,然后再去了解C#异步实现的方式。 .NET 提供了执行异步操作的三种模式: 基于任务的异步模式 (TAP) ,该模式使

    2024年02月03日
    浏览(35)
  • C# 实现单线程异步互斥锁

    C#对异步的支持越来越成熟,async、await简化了代码也提高了可读性,但由于在一段上下文中有了异步操作,意味着这段操作可能会被同时重复调用,如果本身没有被设计可以重复调用的情况下,就很可能会出问题。 异步互斥锁的作用是用于确保存在异步操作的上下文同步互斥

    2024年01月20日
    浏览(35)
  • C# Socket通信从入门到精通(14)——多个异步UDP客户端C#代码实现

    在之前的文章C# Socket通信从入门到精通(13)——单个异步UDP客户端C#代码实现我介绍了单个异步Udp客户端的c#代码实现,但是有的时候,我们需要连接多个服务器,并且对于每个服务器,我们都有一些比如异步发送、异步接收的操作,那么这时候我们使用之前单个异步Udp客户

    2024年02月03日
    浏览(81)
  • std::async 的使用以及 C++ 中异步操作的实现

    在 C++ 中使用一个可调用对象构造一个 std::thread 对象,即可创建一个线程;使用互斥量 std::mutex 来确保多个线程对共享数据的读写操作的同步问题;使用 std::condition_variable 来解决线程执行顺序的同步问题。 ①.同步操作:在发出一个方法调用时,在没有得到结果之前该调用

    2023年04月11日
    浏览(40)
  • C#上位机与三菱FX3UPLC实现异步伪实时串口通信机制(串口类通信可参考)

    串口是串行接口(serial port)的简称,也称为 串行通信接口 或 COM接口。 串口通信(serial communication)是指采用串行通信协议在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。 串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等。 在串行通信中,数

    2023年04月21日
    浏览(53)
  • 黑马点评用rabbitmq实现优惠券秒杀下单后的异步操作数据库数据

    通过@Bean注入MessageConverter,保证消息的正确传输 修改后的代码 监听器

    2024年04月15日
    浏览(47)
  • Unity C# 之 使用 HttpWebRequest 基础知识/HttpWebRequest 进行异步Post 网络访问/数据流形式获取数据(Task/async/await)的代码简单实现

    目录 Unity C# 之 使用 HttpWebRequest 基础知识/HttpWebRequest 进行异步Post 网络访问/数据流形式获取数据(Task/async/await)的代码简单实现 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、关键代码 附录 : HttpWebRequest 的一些基础知识 1、HttpWebRequest 常用属性 2、HttpWebRequest 

    2024年02月05日
    浏览(60)
  • C# 实现reportview的操作,详解。

    一、vs2015中没有reportview组件,需要安装。 在VS中选择工具——Nuget包管理器——程序包管理器控制台 执行命令:Install-Package Microsoft.ReportingServices.ReportViewerControl.WinForms -Pre 然后在VS的工具——选择工具箱项——.NetFramework下,选择“浏览”,然后在工程根目录下的“packagesM

    2024年02月08日
    浏览(22)
  • react 09之状态管理工具1 redux+ react-thunk的使用实现跨组件状态管理与异步操作

    npm install redux react-redux npm i redux-thunk redux-thunk redux-thunk是一个Redux的中间件,它允许你在Redux中编写异步的action creators。

    2024年02月13日
    浏览(49)
  • 掌握C#中异步魔法:同步方法如何优雅调用异步方法

      概述: 上述C#示例演示了如何在同步方法中调用异步方法。通过使用`async`和`await`,实现了同步方法对异步方法的调用。建议使用`await`而不是`Result`来避免潜在的死锁问题。这种模式在处理异步任务时能够提高代码的可读性和性能。 在C#中,从同步方法调用异步方法

    2024年03月25日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包