zoukankan      html  css  js  c++  java
  • 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线程中执行操作的话,那么界面就会是一片空白,然后出现程序没有响应的状态,用户容易以为是程序死了。如果只是在后台开一个线程然后在该线程中执行操作的话,界面虽然不是一片空白,但是用户无法做其他操作,如果点击某个按钮,那么还会出现程序没有响应的状态。
    而如果用上面的回调方法的话,就可以解决上面的问题,所以如果有比较耗时的操作,那么使用回调是一个不错的选择
  • 相关阅读:
    公众号开发完整页面2
    公众号开发完整页面1
    公众号开发15【html页面】
    公众号开发【分享功能】
    公众号开发13【生成二维码】
    公众号开发11【模板消息接口】
    ST05 跟踪SQL
    ABAP 动态生成内表的几种方法
    SMARTFORM & SAPScript
    某种业务场景下,将一个工作区的多个字段整理到一个内表中
  • 原文地址:https://www.cnblogs.com/zxtceq/p/7825827.html
Copyright © 2011-2022 走看看