c#子线程执行完怎么通知主线程
2016-03-01 15:48
274 查看
c#子线程执行完怎么通知主线程
定义一个委托实现回调函数 public delegate void CallBackDelegate(string message); 程序开始的时候 //把回调的方法给委托变量 CallBackDelegate cbd = CallBack; //启动线程 Thread th = new Thread(Fun); th.Start(cbd);//开始线程,代入参数 //线程执行的方法 参数是个委托, 线程中参数需要用object类型. public void Fun(object o) { //这里是你的操作代码,循环,根据条件退出while while(true) { } //把传来的参数转换为委托 CallBackDelegate cbd = o as CallBackDelegate; //执行回调. cbd("这个线程传回的信息"); } //回调方法 private void CallBack(string message) { //主线程报告信息,可以根据这个信息做判断操作,执行不同逻辑. MessageBox.Show(message); }
比如要在刚加载的时候进行网络请求操作,如果直接在UI线程中执行操作的话,那么界面就会是一片空白,然后出现程序没有响应的状态,用户容易以为是程序死了。如果只是在后台开一个线程然后在该线程中执行操作的话,界面虽然不是一片空白,但是用户无法做其他操作,如果点击某个按钮,那么还会出现程序没有响应的状态。
而如果用上面的回调方法的话,就可以解决上面的问题,所以如果有比较耗时的操作,那么使用回调是一个不错的选择
相关文章推荐
- c#开发的程序安装时动态指定windows服务名称
- C# 自动生成mac地址软件
- C#数据类型安全转换
- C# Lambda表达式、匿名、回调
- C#中base和this关键字
- C#中override和overload的区别
- c# from where select
- C# 读取Excel日期格式
- C#基础-方法的重写(new)和覆盖(override)
- 转 C#WinForm程序异常退出的捕获、继续执行与自动重启
- 完整版本支付宝扫码支付 c#版本
- C# 参数数组
- C#调用C dll,结构体传参
- 隐藏C#的TabControl控件的选项卡TabPage
- 第一个C#程序——Hello World!
- C#对象的声明与实例化
- C# IOCP完成端口模型(简单实用高效)
- C#中的Split用法以及详解
- WPF 一个MVVM的简单例子
- [WPF初学]基于WPF框架的MVVM模式简介