当前位置: 首页 > news >正文

C#BeginInvoke编程基础(一)

一、异步编程的核心:委托
在这里插入图片描述

 private int Task1(int num)
 {
     //延迟5S,模拟长时间的操作
     System.Threading.Thread.Sleep(5000);
     return num * num;
 }

 private int Task2(int num)
 {
     return num * num;
 }

1、同步执行任务

/// <summary>
/// 同步执行任务
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
    this.lblResult1.Text = "0";
    this.lblResult2.Text = "0";

    this.lblResult1.Text = Task1(10).ToString();
    this.lblResult2.Text = Task2(20).ToString();
}

2、异步执行,先定义委托

//【1】定义委托
public delegate int MyDelegate(int num);
/// <summary>
/// 异步执行任务
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
    this.lblResult1.Text = "0";
    this.lblResult2.Text = "0";
    MyDelegate objMyCal = Task1;
    IAsyncResult res = objMyCal.BeginInvoke(10, null, null);
    this.lblResult1.Text = "正在执行中,请稍后。。。。。。";
    this.lblResult2.Text = Task2(20).ToString();
    this.lblResult1.Text = objMyCal.EndInvoke(res).ToString();
}

**异步总结:**1、通过委托异步调用 Task2。
2、委托类型烦的 BeginInvoke(<输入和输出变量>,AsyncCallBack callback,object ayncState)方法:异步调用的核心。
3、第一个参数。表示委托对应的方法实参。
4、第二个参数callback,回调函数,表示异步调用结束后,自动调用的方法。
5、第三个参数ayncState,用于想回调函数提供相关的参数信息。
6、返回值,IAsyncResult 异步操作状态接口,封装了异步执行中的参数。

http://www.dtcms.com/a/83154.html

相关文章:

  • python:调用 ui2 获取当前页面所有实时文本
  • 数据结构——优先级队列(堆)
  • 复习HCIA
  • 解决用three.js展示n个叠加的stl模型文件错位的问题
  • ubuntu qt工程打包后续:桌面快捷方式、开机登陆桌面后自动运行
  • OpenCV图像拼接(1)自动校准之校准旋转相机的函数calibrateRotatingCamera()
  • 在线JSON格式校验工具站
  • 详细介绍IDI_APPLICATION和IDC_ARROW
  • ubuntu20.04使用matlab2024a快捷键调整
  • Python 爬取 1688 关键词搜索接口数据返回说明
  • vue el-table 设置selection选中状态
  • MySql面试总结(三)
  • matlab近似计算联合密度分布
  • 阿里云国际站代理商:如何构建交互式安全分析看板?
  • vue3+el-cascader-panel+多选+动态加载+默认展开+选中查询节点并展开+查询到的这一条自动滚动到顶部+tooltip效果
  • 高铁监控存储扩容-DS SAN存储磁盘阵列
  • Python中数据结构元组详解
  • LangChain开发(一)介绍和第一个例子
  • 什么是 BA ?BA怎么样?BA和BI是什么关系?
  • Nginx的HTTPS配置
  • 【论文笔记】Transformer
  • OpenCV专利收费免费模块介绍
  • QT二 QT使用generate form 生成常用UI,各种UI控件
  • Function Calling的核心机制与挑战
  • 【k8s】利用Kubernetes卷快照实现高效的备份和恢复
  • Three.js世界中的三要素:场景、相机、渲染器
  • 一个完整的小项目案例,涉及到项目的规划,模块的设计功能的衔接等。
  • tcpdump-快速查询版-常用后缀
  • 【sql靶场】第23、25,25a关过滤绕过保姆级教程
  • 蓝桥杯之AT24C02的页写页读