C#多线程函数如何传参数和返回值
提起多线程,不得不提起 委托(delegates)这个概念.
我理解的委托就是 具有 同样参数和返回值 的函数的集合.
比如
public delegate void MyDelegate(int arg);
就是这种形式的函数 void Myfuntion(int i); 的集合.
如何将一个函数加入 委托 的集合?
MyDelegate dele = new MyDelegate(Myfuntion1);
再增加一个
dele += new MyDelegate(Myfuntion2);
...
委托函数 dele 就是 具有整数参数和空返回值的函数 Myfuntion1,2的集合.
调用这个委托函数
dele(1);
就是逐个调用 Myfuntion1,2,...
一般线程函数的声明和启动
Thread t = new Thread(new ThreadStart(MyFunction));
t.Start();
正是调用了没有参数和返回值的 委托函数 ThreadStart
其中的参数MyFunction 是 这个委托函数中的一员.
很明显 这样无法传参数和返回值,那我们该怎么办?
答案就在委托 的BeginInvoke() 方法上, BeginInvoke() 也是(异步)启动一个新线程.
例如
MyDelegate dele = new MyDelegate (MyFunction);
dele.BeginInvoke(10,"abcd");
void MyFunction(int count, string str);
可以实现参数的传递.
如何收集线程函数 的 返回值?
与 BeginInvoke 对应 有个 EndInvoke 方法,而且运行完毕返回 IAsyncResult 类型的返回值.
这样我们可以这样收集 线程函数的 返回值
MyDelegate dele = new MyDelegate (MyFunction);
IAsyncResult ref = dele.BeginInvoke(10,"abcd");
....
int result = dele.EndInvoke(ref); <----收集 返回值
int MyFunction(int count, string str); <----带参数和返回值的 线程函数
转载于:https://www.cnblogs.com/chenbg2001/archive/2009/11/22/1607951.html
C#多线程函数如何传参数和返回值相关推荐
- 以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值。
以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值: Sub Example()Dim x As Integer, y As Integerx ...
- python 定义函数时,参数和返回值的数据类型注释
""" a:int 表示添加a的数据类型注释,但事实上就算传入a的值不是int类型也不会报错,可以正常运行; 但编译器会警告. b:int = 5 表示添加b的数据类型注 ...
- .net前台ajax,asp.net利用Ajax和Jquery在前台向后台传参数并返回值
1----------前台 首先需要 Jquer的包 下面是 $(function () { $('#txtUserName').blur(function () { var username = $ ...
- Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法
函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...
- API函数MessageBox的参数与返回值
Win32汇编函数的参数,参数类型,返回值都是一个dword类型(4字节) 返回值永远放在EAX中,如超过4个字节则返回一个数据的指针(指向返回值存放的缓冲区地址) .data titleS db ' ...
- python--plt.hist函数的输入参数和返回值的解释
函数作用----绘制直方图 函数参数和返回值 n,bins,patches=matplotlib.pyplot.hist( x, bins=10, range=None, normed=False, ...
- Python基础之函数2 (参数的返回值)
https://www.toutiao.com/a6663685808244916739/ 2019-03-02 15:04:15 函数参数的类型 不可变类型参数:整数.字符串.元组. fun(a) ...
- 12_python基础—函数基础(参数、返回值、调用)
文章目录 目标 一.了解函数 二.函数基本使用 2.1 函数的定义 2.2 函数调用 2.3 第一个函数演练 思考 2.4 PyCharm 的调试工具 2.5 函数的文档注释 三.函数的参数 3.1 ...
- 1.15 函数1:参数和返回值
函数概述 函数是对一段能够重复使用的代码的封装 函数的参数定义了外界给函数输入的数据 函数的返回值定义了函数给外界输出的数据 Go语言函数支持不定长参数和多个返回值 @函数定义和调用 //定义函数 f ...
最新文章
- MFC按钮添加提示文字
- python class用法_python原类、类的创建过程与方法
- 从 vue-cli 源码中,我发现了27行读取 json 文件有趣的 npm 包
- [libuv] libuv学习
- 俩层判断,判断button是否可以点击
- 为什么栈的数组长度必须是一个常量?而堆的数组长度可以是变量。为什么栈的大小有限制?
- QGIS教程01:为什么要用QGIS?
- Python初学者必须吃透的69个内置函数
- android 入门教程速成,Android入门基础教程(小白速成1)
- 微信H5页面分享案例模版
- linkedin 分享_如何在保持电子邮件私密性的同时导入LinkedIn联系人
- 有功功率、无功功率 和 视在功率之间的关联
- 研究量子计算机学什么,量子计算,量子信息技术,要学什么专业?
- [css]我要用css画幅画(七) - 哆啦A梦
- Android自定义九宫格图片展示,类似微信朋友圈
- CSS和CSS3选择器
- 叠加等边三角形的绘制 python_《叠》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
- 关于联合体union的详细解释
- 去千户苗寨为什么说不要为了节约钱住普通客栈,而要住商务酒店
- CAPM 资本资产定价模型
热门文章
- [SAP ABAP开发技术总结]选择屏幕——SELECT-OPTIONS
- Python数据结构——栈、队列的实现(一)
- 青岛三网融合试点:三屏合一切入
- redis3.0.3 安装与配置
- Android RecyclerView 监听滑动
- python (八)迭代器、生成器、列表推导式
- 使用conda安装pydot及其遇到的问题解决方案
- TestCenter中测试需求、测试用例、测试计划的评审方法
- FONT Awesome 图标
- maven生成jar,运行却提示没有“没有主清单属性”