基于委托的c#异步编程的一个小例子带有回调函数的例子(代码片段)

陈胜威 陈胜威     2022-11-22     218

关键词:


我创建的是一个winform测试项目:界面如下:

设置:

image

image

下面是代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace AsyncCallbackDemo

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();
            objMyCal = ExecuteTask;
        
        //定义一个委托
        public delegate int MyCalculator(int num,int ms);

        //根据委托定义方法,返回一个数的平方
        private int ExecuteTask(int num,int ms)
        
            Thread.Sleep(ms);
            return num * num;
        
        MyCalculator objMyCal = null;
        private void button1_Click(object sender, EventArgs e)
        
         
            for (int i = 0; i < 11; i++)
            
                //定义回调函数MyCallBack,传入回调值i
                objMyCal.BeginInvoke(10 * i,1000*1, MyCallBack, i);
            
        

        private void MyCallBack(IAsyncResult result)
        
            //返回结果
            int res = objMyCal.EndInvoke(result);
            Console.WriteLine("第0个计算结果为1",result.AsyncState.ToString(),res);
        

       
    

基于委托的异步回调

 异步回调时在调用BeginInvoke时提供的回调方法,主线程就不必再等待异步线程工作完毕,异步线程在工作结束后会主动调用提供的回调方法。   classProgram   {       publicdelegatevoid... 查看详情

c#如何使用异步编程begininvoke/endinvoke

怎么使用异步,就是用委托进行处理,如果委托对象在调用列表中只有一个方法,它就可以异步执行这个方法。委托类有两个方法,叫做BeginInvoke和EndInvoke,它们是用来异步执行使用。异步有三种模式等待模式,在发起了异步方... 查看详情

将带有回调的 Python 函数转换为可等待的异步

...异步上下文中使用PyAudio库,但该库的主入口点只有一个基于回调的API:importpyaudiodefcallback(in_data,frame_count,time_info,sta 查看详情

第十七章委托

目录:17.1初识委托17.2用委托回调静态方法17.3用委托回调实例方法17.4委托揭秘17.5用委托回调许多方法(委托链)17.6委托定义不要太多(泛型委托)17.7C#为委托提供的简化语法17.8委托和反射 Microsoft.NETFramework通过委托来提供... 查看详情

委托和回调函数例子

...用int来接收它)。聪明的您一定想到了,传入方法,就用委托来接收它。啥都不说了,例子是最好的老师!publicdelegatevoidOutPutMsgHandler(string 查看详情

node.js回调函数

Node.js异步编程的直接体现就是回调。异步编程依托于回调来实现,但是不能说使用了回调后程序就异步话了,回调函数在完成任务之后会被调用,Node使用了大量的回调函数,Node所以的API都是支持回调函数的。如下是阻塞和非阻... 查看详情

c#异步编程一

...种方式,单线程也可以实现异步。C#中异步主要包括异步委托和异步任务。今天总结下异步委托。一、同步问题大家小时候都可能听说过小明上学的故事,小明起床要 查看详情

c#委托基本例子(代码片段)

委托的基本概念,  委托(Delegate)是存有对某个方法的引用的一种引用类型变量;  引用可在运行时被改变;  委托(Delegate)特别用于实现事件和回调方法;  所有的委托(Delegate)都派生... 查看详情

c#如何使用异步编程

   怎么使用异步,就是用委托进行处理,如果委托对象在调用列表中只有一个方法,它就可以异步执行这个方法。委托类有两个方法,叫做BeginInvoke和EndInvoke,它们是用来异步执行使用。异步有三种模式等待模式,在... 查看详情

c#异步有多少种实现方式?(代码片段)

...。.NET异步编程模式.NET提供了执行异步操作的三种模式:基于任务的异步模式(TAP) ,该模式使用单一方法表示异步操作的开始和完成。TAP是在.NETFramework4中引入的。 这是在.NET中进行异步编程的推荐方法。 C#中的 asy... 查看详情

python爬虫编程思想(106):基于splash的爬虫--异步处理与go函数(代码片段)

        Splash支持异步处理,例如,go函数就是通过异步方式访问页面的,不过go函数并不能指定异步回调函数,所以在调用go函数后,需要使用wait函数等待一会,这样可以给页面装载留有一定的时间... 查看详情

c#中的委托是啥?事件是否一种委托?

C#中的委托是什么?事件是不是一种委托?委托是CTS(公共类型系统)规定的5种类型之一(类类型、结构类型、接口类型、枚举类型、委托类型)。通俗的说,委托是这样一种类型:这种类型的实例,指向其它类型的方法。委托主... 查看详情

(16)c#tcpclient异步连接和接收数据的小例子(代码片段)

...好。所以需要针对这种情况进行别的尝试,那么就是采用异步编程,或者采用多线程。在本文里采用异步编程,就可以快捷地解决问题。由于采用了异步编程,所以从TcpClient里回调函数去更新界面时,就不能直接采用阻塞的方式 查看详情

带有回调的 .NET 异步 Web 服务调用

】带有回调的.NET异步Web服务调用【英文标题】:.NETasyncwebservicecallwithacallback【发布时间】:2016-09-1401:48:29【问题描述】:我们有一个遗留的VB6应用程序,它使用一个用C#(.NET4.5)编写的ASMXWeb服务,该服务又使用一个库(C#/.NET4.5)来... 查看详情

unity的c#学习——委托事件和匿名方法(代码片段)

文章目录C#委托1、委托的声明2、委托的实例化补充:委托实例化的快捷方式3、System.Delegate类4、委托的高级特性4.1委托的多播能力4.2匿名委托和Lambda表达式C#事件1、事件的声明和使用1.1定义事件委托类型1.2声明事件1.3触发事... 查看详情

第七部分:小插曲,deferred(代码片段)

...插在任何我们写的Twisted结构内。因此在使用Twisted或其它基于reactor的异步编程体系时,都意味需要将我们的代码组织成一系列由reactor循环可以激活的回调函数链。即使一个简单的get_poetry函数都需要回调,两个回调函数中一个用... 查看详情

异步使用委托delegate---begininvoke和endinvoke方法(代码片段)

当我们定义一个委托的时候,一般语言运行时会自动帮委托定义BeginInvoke和EndInvoke两个方法,这两个方法的作用是可以异步调用委托。方法BeginInvoke有两个参数:AsyncCallBack:回调函数,是一个委托,没有返回值,可以传一个参数... 查看详情

c#中的委托是啥?事件是否一种委托?

委托就好比你委托某人帮你做某件事情,只不过这个是委托给方法罢了,事件是一种特殊的委托...参考技术A本节内容参考《你必须知道的.NET》和《C#高级编程(第四版)》一、了解委托我们知道回调函数实际上就是方法调用的... 查看详情