提起多线程,不得不提起 委托(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#多线程函数如何传参数和返回值相关推荐

  1. 以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值。

    以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值: Sub Example()Dim x As Integer, y As Integerx ...

  2. python 定义函数时,参数和返回值的数据类型注释

    """ a:int 表示添加a的数据类型注释,但事实上就算传入a的值不是int类型也不会报错,可以正常运行; 但编译器会警告. b:int = 5 表示添加b的数据类型注 ...

  3. .net前台ajax,asp.net利用Ajax和Jquery在前台向后台传参数并返回值

    1----------前台 首先需要 Jquer的包 下面是 $(function () { $('#txtUserName').blur(function () { var username = $ ...

  4. Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法

    函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...

  5. API函数MessageBox的参数与返回值

    Win32汇编函数的参数,参数类型,返回值都是一个dword类型(4字节) 返回值永远放在EAX中,如超过4个字节则返回一个数据的指针(指向返回值存放的缓冲区地址) .data titleS db ' ...

  6. python--plt.hist函数的输入参数和返回值的解释

    函数作用----绘制直方图 函数参数和返回值 n,bins,patches=matplotlib.pyplot.hist( x, bins=10, range=None, normed=False, ...

  7. Python基础之函数2 (参数的返回值)

    https://www.toutiao.com/a6663685808244916739/ 2019-03-02 15:04:15 函数参数的类型 不可变类型参数:整数.字符串.元组. fun(a) ...

  8. 12_python基础—函数基础(参数、返回值、调用)

    文章目录 目标 一.了解函数 二.函数基本使用 2.1 函数的定义 2.2 函数调用 2.3 第一个函数演练 思考 2.4 PyCharm 的调试工具 2.5 函数的文档注释 三.函数的参数 3.1 ...

  9. 1.15 函数1:参数和返回值

    函数概述 函数是对一段能够重复使用的代码的封装 函数的参数定义了外界给函数输入的数据 函数的返回值定义了函数给外界输出的数据 Go语言函数支持不定长参数和多个返回值 @函数定义和调用 //定义函数 f ...

最新文章

  1. MFC按钮添加提示文字
  2. python class用法_python原类、类的创建过程与方法
  3. 从 vue-cli 源码中,我发现了27行读取 json 文件有趣的 npm 包
  4. [libuv] libuv学习
  5. 俩层判断,判断button是否可以点击
  6. 为什么栈的数组长度必须是一个常量?而堆的数组长度可以是变量。为什么栈的大小有限制?
  7. QGIS教程01:为什么要用QGIS?
  8. Python初学者必须吃透的69个内置函数
  9. android 入门教程速成,Android入门基础教程(小白速成1)
  10. 微信H5页面分享案例模版
  11. linkedin 分享_如何在保持电子邮件私密性的同时导入LinkedIn联系人
  12. 有功功率、无功功率 和 视在功率之间的关联
  13. 研究量子计算机学什么,量子计算,量子信息技术,要学什么专业?
  14. [css]我要用css画幅画(七) - 哆啦A梦
  15. Android自定义九宫格图片展示,类似微信朋友圈
  16. CSS和CSS3选择器
  17. 叠加等边三角形的绘制 python_《叠》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  18. 关于联合体union的详细解释
  19. 去千户苗寨为什么说不要为了节约钱住普通客栈,而要住商务酒店
  20. CAPM 资本资产定价模型

热门文章

  1. [SAP ABAP开发技术总结]选择屏幕——SELECT-OPTIONS
  2. Python数据结构——栈、队列的实现(一)
  3. 青岛三网融合试点:三屏合一切入
  4. redis3.0.3 安装与配置
  5. Android RecyclerView 监听滑动
  6. python (八)迭代器、生成器、列表推导式
  7. 使用conda安装pydot及其遇到的问题解决方案
  8. TestCenter中测试需求、测试用例、测试计划的评审方法
  9. FONT Awesome 图标
  10. maven生成jar,运行却提示没有“没有主清单属性”