定义一个委托实现回调函数
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线程中执行操作的话,那么界面就会是一片空白,然后出现程序没有响应的状态,用户容易以为是程序死了。如果只是在后台开一个线程然后在该线程中执行操作的话,界面虽然不是一片空白,但是用户无法做其他操作,如果点击某个按钮,那么还会出现程序没有响应的状态。
而如果用上面的回调方法的话,就可以解决上面的问题,所以如果有比较耗时的操作,那么使用回调是一个不错的选择

https://www.cnblogs.com/zxtceq/p/7825827.html

c#子线程执行完怎么通知主线程(转)的更多相关文章

  1. C#子线程执行完后通知主线程(转)

    其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿.  那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法 ...

  2. C#子线程执行完后通知主线程

    其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿. 那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法就 ...

  3. c#子线程执行完怎么通知主线程

    定义一个委托实现回调函数 public delegate void CallBackDelegate(string message); 程序开始的时候 //把回调的方法给委托变量 CallBackDe ...

  4. C#子线程执行完后,调用主线程的方法

    private delegate void CheckVersionNumber_CallBack(string str);//定义一个为委托 用于 检测版本 //检测版本private void m ...

  5. Python开发【笔记】:关于子线程(子进程)与主线程(主进程)的关联

    前言: 主要分析下面的问题: 主线程启线程  主线程执行完毕,会关闭子线程吗? 子线程启线程  主线程执行完毕,会结束吗? 主进程启动进程,主进程执行完毕,会怎样? 子进程启动进程,进程执行完毕,又会 ...

  6. java多线程实现主线程等待子线程执行完问题

    本文介绍两种主线程等待子线程的实现方式,以5个子线程来说明: 1.使用Thread的join()方法,join()方法会阻塞主线程继续向下执行. 2.使用Java.util.concurrent中的C ...

  7. 【转载】Delphi7从子线程中发送消息到主线程触发事件执行

    在对数据库的操作时,有时要用一个子线程来进行后台的数据操作.比如说数据备份,转档什么的.在主窗口还能同是进行其它操作.而有时后台每处理一个数据文件,要向主窗口发送消息,让主窗口实时显示处理进度在窗口上 ...

  8. GCD多线程 在子线程中获取网络图片 在主线程更新

    子线程中得所有数据都可以直接拿到主线程中使用 //当触摸屏幕的时候,从网络上下载一张图片到控制器的view上显示 -(void)touchesBegan:(NSSet *)touches withEv ...

  9. JAVA可阻塞队列-ArrayBlockingQueue子类BlockingQueue的应用,使用它来实现子线程打印10次,主线程打印100次,如此反复

    /** * 使用BlockingQueue实现主子线程互相打印 * @author duwenlei * */ public class BlockingQueueTest { public stat ...

随机推荐

  1. 【转】angular使用代理解决跨域

    原文:https://www.cnblogs.com/sghy/p/9111293.html ----------------------------------------------------- ...

  2. VS Code 常用插件配置

    Debugger for Chrome 该扩展可以在两种模式下运行--它可以启动(launch)导航到你的应用程序的Chrome实例,也可以附加(attach)到正在运行的Chrome实例.这两种模式 ...

  3. redis中对list类型某个元素的查找和删除

    我们的信息都是放到redis的缓存中,结构为list,如果知道特定的值的话,通过LREM  key  count  value这样就可以.对于redis的list结构,获取某个位置的值通过 LINDE ...

  4. Number of Islands II

    Given a n,m which means the row and column of the 2D matrix and an array of pair A( size k). Origina ...

  5. 系统空闲时间 解决 GetLastInputInfo 负数问题

    using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices ...

  6. sql server 的触发器的demo例子

    -- ============================================= -- Author: <Author,,Name> -- Create date: < ...

  7. AcWing P164 可达性统计 题解

    Analysis 这道题我一开始想到的是传递闭包,但是时间复杂度是n³,也开不下30000*30000的数组,所以我想到了拓扑+状态压缩(bitset),从后往前找,把能到达的点能到哪里用位运算赋到上 ...

  8. js2py

    js2py

  9. DOM操作1

    1.DOM文档对象模型:操作页面元素(标签) html文件看成一个文档,把文档看成一个对象 xml也是一种文档,标签自定义,系统不自带标签,偏向于存储数据 2.DOM树:由文档及文档中的所以元素(标签 ...

  10. (RE) luogu P3690 【模板】Link Cut Tree

    二次联通门 : luogu P3690 [模板]Link Cut Tree 莫名RE第8个点....如果有dalao帮忙查错的话万分感激 #include <cstdio> #includ ...