zoukankan      html  css  js  c++  java
  • BeginInvoke分析

    在异步接收时,使用了BeginInvoke调用主线程中的处理函数,假如主线程中处理函数时间很长,会出现什么情况呢?

    进行了一次测试:每秒发送一个数据包,在收到数据包时,记录时间,并传递这个时间到处理函数,而处理函数中会sleep3秒,结果如下:

    调用处理22:04
    处理:22:04
    调用处理22:05
    调用处理22:06
    处理:22:05
    调用处理22:07
    调用处理22:08
    调用处理22:09
    处理:22:06
    调用处理22:10
    调用处理22:11
    调用处理22:12
    处理:22:07
    调用处理22:13
    调用处理22:14
    调用处理22:15
    处理:22:08
    调用处理22:16
    调用处理22:17
    调用处理22:18
    线程 0x988 已退出,返回值为 0 (0x0)。
    处理:22:09
    调用处理22:19
    调用处理22:20
    调用处理22:21
    处理:22:10
    调用处理22:22
    调用处理22:23
    调用处理22:23
    调用处理22:24
    处理:22:11
    调用处理22:25
    调用处理22:26
    调用处理22:27
    调用处理22:28
    处理:22:12
    处理:22:13
    处理:22:14
    处理:22:15
    处理:22:16
    处理:22:17
    线程 0x5f4 已退出,返回值为 0 (0x0)。
    处理:22:18
    处理:22:19
    处理:22:20
    处理:22:21
    处理:22:22
    处理:22:23
    处理:22:23
    处理:22:24
    处理:22:25
    处理:22:26
    处理:22:27
    处理:22:28

    结论:异步处理函数中,使用BeginInvoke调用主线程处理,将不会影响到数据的接收(每秒的数据都会被收到)。但异步方式调用的接收处理会处于控件消息队列中,必须按顺序逐条执行。

  • 相关阅读:
    行政区划遮罩 -Leaflet
    WebGIS vs WebGL图形编程
    oracle 中 group by 加强
    Nagios监控服务搭建
    MySQL触发器使用详解
    mybatis--一对多关联
    mybatis--一对一关联查询
    mybatis--实现数据库增删改查
    mybatis--使用接口注解的方式实现Helloword
    mybatis--第一个mybatis程序
  • 原文地址:https://www.cnblogs.com/jetz/p/1780621.html
Copyright © 2011-2022 走看看