多线程委托回调

简介:  public void updateme()  程序调用这个函数 <br>        {<br>            lblTime.Text = "正在读取数据..."; <br>            if (isruning) return;<br>            isruning = true;<br>            this.btnDo.Enabled = f
 public void updateme()  程序调用这个函数
        {
            lblTime.Text = "正在读取数据...";
            if (isruning) return;
            isruning = true;
            this.btnDo.Enabled = false;
            lv.Items.Clear();  设置一些数据 , 比如提示或者 按钮等. 查询期间是不允许操作的.  
            System.Threading.ThreadPool.QueueUserWorkItem( _updateme  );//请求一个线程池中的线程 , 让他完成一个操作 这个操作_updateme  .
        }
          public delegate void d_updateme(); 用于回调的委托 .
          public void _updateme(object state )     供给线程调用的函数.
        {
            AsyncCallback ac=new AsyncCallback(updateme_);           创建一个回调 . 回调函数updateme_        
            GetALog gal = new GetALog(BLL.Traffic.GetALog);把要执行的代码创建到委托里 .
            IAsyncResult result = gal.BeginInvoke(LogDateTime,  _VDI , ac, gal);         开始执行该委托.  
        }
        public void updateme_(IAsyncResult iar) ///这里是回答内容.
        {
            GetALog gal = (GetALog)iar.AsyncState;委托转换 .
            DataTable t = gal.EndInvoke(iar); 调用结束委托方法,取得返回值 .
            this.BeginInvoke(new duupdateme(uupdateme), t); 调用窗体中的uupdateme函数 ,使得使用t值,
           这个地方我没太注意, 我不知道回调是由窗体线程还是刚才线程池中的线程.
        }
        delegate void duupdateme(DataTable t); //委托 .

        private void uupdateme(DataTable t )
        {
这个函数中就是处理数据的.

}
目录
相关文章
|
C++
C++两种线程模式:委托和继承(附示例)
继承方式实现简单,请参见:https://github.com/eyjian/mooon/blob/master/common_library/include/mooon/sys/thread.
841 0
|
安全
多线程+委托的安全访问(invoke)
1.声明方法 2.声明委托类型 3.创建委托对象 4.启动线程 5.在线程调用的方法里通过Control的Invoke方法执行委托 public Form1() { InitializeComponent(); //TextBox.
766 0
socket 通信 多线程调用窗体(委托)的几个知识点,记录在案,以备查阅
1.socket 通信传输汉字的方法:Encoding.GetEncoding("GB2312").GetString(Receivebyte) 发送接收都这样转化 直接上程序   public partial class Form1 : Form { pub...
812 0
多线程,异步委托,同步委托几种方式的区别
Code        public delegate void DoThingsDelegate();        private void Window_Loaded(object sender, RoutedEventArgs e)        {            //通过子线程调...
884 0
|
1月前
|
存储 监控 Java
Java多线程优化:提高线程池性能的技巧与实践
Java多线程优化:提高线程池性能的技巧与实践
58 1
|
7天前
|
Java Spring
spring多线程实现+合理设置最大线程数和核心线程数
本文介绍了手动设置线程池时的最大线程数和核心线程数配置方法,建议根据CPU核数及程序类型(CPU密集型或IO密集型)来合理设定。对于IO密集型,核心线程数设为CPU核数的两倍;CPU密集型则设为CPU核数加一。此外,还讨论了`maxPoolSize`、`keepAliveTime`、`allowCoreThreadTimeout`和`queueCapacity`等参数的设置策略,以确保线程池高效稳定运行。
54 10
spring多线程实现+合理设置最大线程数和核心线程数
|
15天前
|
Java 数据库 Android开发
一个Android App最少有几个线程?实现多线程的方式有哪些?
本文介绍了Android多线程编程的重要性及其实现方法,涵盖了基本概念、常见线程类型(如主线程、工作线程)以及多种多线程实现方式(如`Thread`、`HandlerThread`、`Executors`、Kotlin协程等)。通过合理的多线程管理,可大幅提升应用性能和用户体验。
28 15
一个Android App最少有几个线程?实现多线程的方式有哪些?
|
1天前
|
Python
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
|
17天前
|
Java 数据库 Android开发
一个Android App最少有几个线程?实现多线程的方式有哪些?
本文介绍了Android应用开发中的多线程编程,涵盖基本概念、常见实现方式及最佳实践。主要内容包括主线程与工作线程的作用、多线程的多种实现方法(如 `Thread`、`HandlerThread`、`Executors` 和 Kotlin 协程),以及如何避免内存泄漏和合理使用线程池。通过有效的多线程管理,可以显著提升应用性能和用户体验。
37 10