首页 > 编程语言 >C#中一种回调函数用法

C#中一种回调函数用法

时间:2024-05-24 23:50:56浏览次数:19  
标签:文件 函数 进度条 C# 用法 progress 回调 下载

做一个局域网文件传输工具,界面点按钮下载文件,同时显示文件下载进度条,而下载文件流是调用的一个开源的公共类库里的一个方法,方法里不可实现进度条更新,因为是公共的,不应有侵入式代码,但为了实时更新进度条的值,也只能修改文件传输方法,由此我想到了回调函数。

点击按钮是调用文件下载方法,并给方法传入一个回调函数,下载方法里循环接收文件流数据时实时调用回调函数返回进度值,回调函数里更新界面进度条。

我是比较老旧的.NET Framework 3.5环境,通过搜索相关资料,找到了System.Action委托这个关键点,通过它可以实现想要的效果。

 

传入回调函数代码:

// 在调用公共库接收文件方法里传入一个委托(回调函数),要求返回一个decimal类型的值
client.DownloadFile(savePath, delegate(decimal progress)
{
    // Console.WriteLine("文件接收进度: " + progress + "%");
    updateUiProgress(progress + "%"); // 更新进度条
});

 

调用回调函数代码:

// 定义下载文件方法
bool DownloadFile(string filePath,  System.Action<decimal> callback)
{
    decimal progress = 0;
    // 下载文件代码略...
    while(stream.read(...))
    {
        progress += 8
        // 执行回调函数,传入进度值
        callback.Invoke(progress);
    }
}

 

标签:文件,函数,进度条,C#,用法,progress,回调,下载
From: https://www.cnblogs.com/jsper/p/18211869

相关文章

  • 【GESP试卷】2024年03月Scratch四级试卷
    2024年GESP03月认证Scratch四级试卷分数:100题数:27一、单选题(共15题,每题2分,共30分)010203040506070809101112131415CDBBACBCDCDADBA1、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?()A.小程序B.计时器C.操作系统D.神话人物标准答案:C......
  • CMU 15-445 Lecture #05: Storage Models & Compression笔记总结(上)
    这是cmu15-445第五节课程StorageModels&Compression的上半部分,主要包括StorageModels的内容,压缩部分下次再整理,学完这部分可以去做hw2的第一部分课程主页:CMU15-445/645::IntrotoDatabaseSystems(Fall2023)(有几张图片目前没上传,过两天补一下)DatabaseWorkloads......
  • CMU15-445 23fall P1,给小白的buffer pool教程
    项目链接:Project#1-BufferPool|CMU15-445/645::IntrotoDatabaseSystems(Fall2023)23fall版本源码:ReleaseFall2023-UpdatedRelease·cmu-db/bustub·GitHub前言写文章的目的其实是自己当初写的时候也基本上是照着别人代码写,现在要开始写P2了,总觉得不......
  • vue-cli和vue有什么区别
    “vue-cli”和vue的区别:vue是“vue.js”的简称,是一个成熟的用于构建用户界面的javascript渐进式框架,而“vue-cli”是vue基础上进行开发的工具系统,是vue框架的一个命令工具。vue-cli和vue有什么区别1、什么是Vue?vue是vue.js的简称,它是被拥有在创建用户界面的一个开发的......
  • turing complete(图灵完备)——基础逻辑电路
    前言        两个月前玩了个挺有意思的游戏——turingcomplete(steam售价70RMB)。大致情节是:外星人侵略地球,而你被外星人抓走了,它们决定将智力低下的生物都吃掉,而它们区别你是否智慧,是否吃掉你的依据是:你能否从简单的门电路开始手搓一台计算机......    本篇......
  • 仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码
    码名称:仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码开发环境:帝国cms7.5空间支持:php+mysql 仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码+自动采集-我爱模板网源码名称:仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码开发环境:帝国......
  • CF1973F Maximum GCD Sum Queries 题解
    题目链接点击打开链接题目解法首先想到枚举两个数列的$\gcd$,求最小代价两个数列的\(\gcd\)应该分别是\(a_1,b_1\)的因数或\(b_1,a_1\)的因数这样就把枚举范围缩小到了\(d(a_1)\timesd(b_1)\),这求最小代价需要\(O(n)\),不够快假设枚举的\(\gcd\)分别为\(x,y\)......
  • 初识C语言——数组详解
    C语言数组相关的详述,值得一看。文章目录一、数组的概念二、一维数组1.一维数组的创建和初始化1.1数组创建1.2数组的初始化2.数组的类型3.一维数组的使用3.1数组的打印3.2数组的输入4.⼀维数组在内存中的存储5.sizeof求数组元素个数三、二维数组1.二维数组的创建和......
  • 汇编语言(STC89C52)
     指令是计算机计算CPU根据人的意图来执行某种操作的命令。一台计算机所执行的全部指令的集合,称为这个CPU的指令系统。而想要使计算机按照人们的要求完成一项工作,就必须让CPU按顺序执行预设的操作,即逐条执行人们编写的指令。这种按照人民要求所编排的序列,称为程序。编写程序的......
  • leetcode刷题
    文章目录前言两数之和1️⃣暴力for循环2️⃣解法23️⃣构建哈希表两数相加1️⃣链表→......