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调用主线程处理,将不会影响到数据的接收(每秒的数据都会被收到)。但异步方式调用的接收处理会处于控件消息队列中,必须按顺序逐条执行。

  • 相关阅读:
    numpy模块
    Flask--请求扩展
    Flask补充--threading.local对象
    Flask-Cookies和Session
    Flask--请求上下文
    SQL Server 2005详细安装过程及配置
    Linux设置Mysql开机自启动服务
    重启网卡提示Bringing up interface eth0:
    本地docker容器迁移到服务端
    Window安装tomcat环境
  • 原文地址:https://www.cnblogs.com/jetz/p/1780621.html
Copyright © 2011-2022 走看看