• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#子线程执行完后通知主线程的方法

C#子线程执行完后通知主线程的方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#子线程,c#子线程更新ui,c#关闭子线程,c#创建子线程,c#跨线程访问控件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿。

那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法就很简单了委托传值嘛;

下面有一个例子,子线程干一件事情,做完了通知主线程

public class Program
  {
    //定义一个为委托
    public delegate void Entrust(string str);
    static void Main(string[] args)
    {
      Entrust callback = new Entrust(CallBack); //把方法赋值给委托
      Thread th = new Thread(Fun);
      th.IsBackground = true;
      th.Start(callback);//将委托传递到子线程中
      Console.ReadKey();
    }
    private static void Fun(object obj) {
      //注意:线程的参数是object类型
      for (int i = 1; i <= 10; i++)
      {
        Console.WriteLine("子线程循环操作第 {0} 次",i);
        Thread.Sleep(500);
      }
      Entrust callback = obj as Entrust;//强转为委托
      callback("我是子线程,我执行完毕了,通知主线程");
      //子线程的循环执行完了就执行主线程的方法
    }
    //主线程的方法
    private static void CallBack(string str) {
      Console.WriteLine(str);
    }
  }
</div>

上面就是一个通过委托进行向主线程传值(也就是通知主线程)的过程,上面我们是自己定义了一个委托,当然我们也可以使用.NET为我们提供的Action<>和Fun<>泛型委托来处理,就像这样

public class Program
  {
    //定义一个为委托
    public delegate void Entrust(string str);
    static void Main(string[] args)
    {
      Action<string> callback = ((string str) => { Console.WriteLine(str); });
      //Lamuda表达式
      Thread th = new Thread(Fun);
      th.IsBackground = true;
      th.Start(callback);
      Console.ReadKey();
    }
    private static void Fun(object obj) {
      for (int i = 1; i <= 10; i++)
      {
        Console.WriteLine("子线程循环操作第 {0} 次",i);
        Thread.Sleep(500);
      }
      Action<string> callback = obj as Action<string>;
      callback("我是子线程,我执行完毕了,通知主线程");
    }

  }
 //上面的Lamuda表达式也可以回城匿名函数
 //Action<string> callback = delegate(string str) { Console.WriteLine(str); };
</div>

下面是运行结果

以上这篇C#子线程执行完后通知主线程的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#子线程执行完后通知主线程的方法
  • C#子线程更新UI控件的方法实例总结
  • C#利用子线程刷新主线程分享教程

相关文章

  • 2017-05-28使用C#实现读取系统配置文件的代码实例讲解
  • 2017-05-28asp.net新闻列表生成静态页之批量和单页生成
  • 2017-05-28如何使用C#在PDF文件添加图片印章
  • 2017-05-28C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)
  • 2017-05-28c#装箱和拆箱知识整理
  • 2017-05-28c#动态改变webservice的url访问地址
  • 2017-05-28c#闭包使用方法示例
  • 2017-05-28详解C#编程中异常的创建和引发以及异常处理
  • 2017-05-28C#实现图形区域组合操作的方法
  • 2017-05-28C#删除文件夹和文件到回收站示例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 轻松学习C#的预定义数据类型
    • C#使用Socket实现发送和接收图片的方法
    • C#通过流写入数据到文件的方法
    • C#中把日志导出到txt文本的简单实例
    • c#字符串值类型与引用类型比较示例
    • C#中字符串的加密的源码
    • C#委托初级使用的实例代码
    • C#实现判断当前操作用户管理角色的方法
    • c#深拷贝文件夹示例
    • C#使用iTextSharp添加PDF水印

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有