多线程委托回调

简介:  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.
840 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)        {            //通过子线程调...
883 0
|
25天前
|
存储 监控 Java
Java多线程优化:提高线程池性能的技巧与实践
Java多线程优化:提高线程池性能的技巧与实践
49 1
|
8天前
|
Java 数据库 Android开发
一个Android App最少有几个线程?实现多线程的方式有哪些?
本文介绍了Android多线程编程的重要性及其实现方法,涵盖了基本概念、常见线程类型(如主线程、工作线程)以及多种多线程实现方式(如`Thread`、`HandlerThread`、`Executors`、Kotlin协程等)。通过合理的多线程管理,可大幅提升应用性能和用户体验。
25 15
一个Android App最少有几个线程?实现多线程的方式有哪些?
|
10天前
|
Java 数据库 Android开发
一个Android App最少有几个线程?实现多线程的方式有哪些?
本文介绍了Android应用开发中的多线程编程,涵盖基本概念、常见实现方式及最佳实践。主要内容包括主线程与工作线程的作用、多线程的多种实现方法(如 `Thread`、`HandlerThread`、`Executors` 和 Kotlin 协程),以及如何避免内存泄漏和合理使用线程池。通过有效的多线程管理,可以显著提升应用性能和用户体验。
30 10
|
17天前
|
存储 Ubuntu Linux
C语言 多线程编程(1) 初识线程和条件变量
本文档详细介绍了多线程的概念、相关命令及线程的操作方法。首先解释了线程的定义及其与进程的关系,接着对比了线程与进程的区别。随后介绍了如何在 Linux 系统中使用 `pidstat`、`top` 和 `ps` 命令查看线程信息。文档还探讨了多进程和多线程模式各自的优缺点及适用场景,并详细讲解了如何使用 POSIX 线程库创建、退出、等待和取消线程。此外,还介绍了线程分离的概念和方法,并提供了多个示例代码帮助理解。最后,深入探讨了线程间的通讯机制、互斥锁和条件变量的使用,通过具体示例展示了如何实现生产者与消费者的同步模型。