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

  • 相关阅读:
    idea 配置 maven 项目
    idea 配置普通web项目
    idea java.lang.OutOfMemoryError: PermGen space
    idea checkout 项目
    物理机自动化装机实现
    prometheus node_exporter相关监控指标
    nginx Linux内核参数的优化
    《高性能 Go 代码工坊》中译
    docker仓库资源的地址修改
    influxdb-1.7.8(centos 7) 部署
  • 原文地址:https://www.cnblogs.com/jetz/p/1780621.html
Copyright © 2011-2022 走看看