WinExec不仅会造成延迟,并且还会引起消息的重入。

以下是调用堆栈:

WinvoiceCC.exe!CWinvoiceCCDlg::OnMsgHttpReq(unsigned int wParam=38434384, long lParam=0)  行624
C++

mfc90d.dll!CWnd::OnWndMsg(unsigned int message=2564, unsigned int wParam=38434384, long lParam=0, long * pResult=0x0012e4dc)  行2018 + 0x11 字节
C++

mfc90d.dll!CWnd::WindowProc(unsigned int message=2564, unsigned int wParam=38434384, long lParam=0)  行1755 + 0x20 字节
C++

mfc90d.dll!AfxCallWndProc(CWnd * pWnd=0x0012f9b4, HWND__ * hWnd=0x0034062c, unsigned int nMsg=2564, unsigned int wParam=38434384, long lParam=0)  行240 + 0x1c 字节
C++

mfc90d.dll!AfxWndProc(HWND__ * hWnd=0x0034062c, unsigned int nMsg=2564, unsigned int wParam=38434384, long lParam=0)  行403
C++

mfc90d.dll!AfxWndProcBase(HWND__ * hWnd=0x0034062c, unsigned int nMsg=2564, unsigned int wParam=38434384, long lParam=0)  行441 + 0x15 字节
C++

user32.dll!_InternalCallWinProc@20()  + 0x28 字节


user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 字节


user32.dll!_DispatchClientMessage@20()  + 0x4d 字节


user32.dll!___fnDWORD@4()  + 0x24 字节

ntdll.dll!_KiUserCallbackDispatcher@12()  + 0x13 字节


user32.dll!_NtUserWaitForInputIdle@12()  + 0xc 字节


kernel32.dll!_WinExec@8()  + 0xaf 字节

WinvoiceCC.exe!CExternExeCmdService::Execute(const char * lpszCmd=0x004eef48, const char * lpszParams=0x024a2fd8)  行21 + 0x1d 字节
C++

WinExec可能会引起消息重入的更多相关文章

  1. rabbitmq之消息重入队列

    说起消息重入队列还得从队列注册消费者说起,客户端在向队列注册消费者之后,创建的channel也会被主队列进程monitor,当channel挂掉后,主队列进程(rabbit_amqqueue_proc ...

  2. 【WCF】服务并发中的“可重入模式”

    WCF服务实例的并发模式是在服务实现类上,使用 ServiceBehaviorAttribute 的 ConcurrencyMode 属性来指定.其值由 ConcurrencyMode 枚举来界定,这 ...

  3. 不可重入定时器Newlife.TimerX

    在.net常用的定时器类有下面三种,使用定时器时需要设定参数,如间断时间.定时器计溢出后的回调函数.延时.开始等,定时器的的主要方法有开始.终止等,不同的定时器实现上述的方法会有一些差异,本文会针对具 ...

  4. Use Reentrant Functions for Safer Signal Handling(译:使用可重入函数进行更安全的信号处理)

    Use Reentrant Functions for Safer Signal Handling 使用可重入函数进行更安全的信号处理 How and when to employ reentranc ...

  5. java高并发系列 - 第12天JUC:ReentrantLock重入锁

    java高并发系列 - 第12天JUC:ReentrantLock重入锁 本篇文章开始将juc中常用的一些类,估计会有十来篇. synchronized的局限性 synchronized是java内置 ...

  6. redis实现分布式锁需要考虑的因素以及可重入锁实现

    死锁 错误例子 解决方式  防止死锁 通过设置超时时间  不要使用setnx key   expire 20  不能保证原子性 如果setnx程序就挂了 没有执行expire就死锁了  reidis2 ...

  7. Redis分布式锁—Redisson+RLock可重入锁实现篇

    前言 平时的工作中,由于生产环境中的项目是需要部署在多台服务器中的,所以经常会面临解决分布式场景下数据一致性的问题,那么就需要引入分布式锁来解决这一问题. 针对分布式锁的实现,目前比较常用的就如下几种 ...

  8. C#中Timer使用及解决重入问题

    C#中Timer使用及解决重入问题 ★介绍 首先简单介绍一下timer,这里所说的timer是指的System.Timers.timer,顾名思义,就是可以在指定的间隔是引发事件.官方介绍在这里,摘抄 ...

  9. 可重入锁 公平锁 读写锁、CLH队列、CLH队列锁、自旋锁、排队自旋锁、MCS锁、CLH锁

    1.可重入锁 如果锁具备可重入性,则称作为可重入锁. ========================================== (转)可重入和不可重入 2011-10-04 21:38 这 ...

随机推荐

  1. ubuntu服务器建立apache虚拟主机

    启用与停用站点的方法 a2ensite 站点名 a2dissite 站点名 基于名字的(通过域名来区分)的虚拟主机 安装好apache以后默认有一个叫default的虚拟主机.新建虚拟主机时可以直接复 ...

  2. C# 获取目录下文件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. ALTER FUNCTION - 修改一个函数的定义

    SYNOPSIS ALTER FUNCTION name ( [ type [, ...] ] ) RENAME TO newname DESCRIPTION 描述 ALTER FUNCTION 修改 ...

  4. mysql 添加记录或者删除记录

    insert into tableName (prod1,pord2,... ) values (v1,v2,...) [,(v1,v2,...),(v1,v2,...)] 程度从强到弱 1.drop ...

  5. QTreeWidgetItem和QTreeWidgetItemIterator

    1.{ ui->treeWidget->setHeaderHidden(true); ui->treeWidget->clear(); QTreeWidgetItem *ima ...

  6. CF1000G Two-Paths

    题目大意:给你一棵树,其中点上和边上都有值.定义2-Path为经过一条边最多两次的路径,价值为经过点的权值加和-经过边权值*该边经过次数.4e5组询问,每次询问树上连接x,y两点的2-Path的最大价 ...

  7. JavaScript实现AES算法加密和解密

    JavaScript的加密和解密用的是google的CryptoJS库.本文以AES/ECB/NoPadding为例展示AES加密和解密的方法. 需要下载CryptoJS库,下载地址如下:https: ...

  8. 文件 jq 传到后台

    XMLHttpRequest Level 2 添加了一个新的接口——FormData.与普通的 Ajax 相比,使用 FormData 的最大优点就是我们可以异步上传二进制文件. jQuery 2.0 ...

  9. Python数组列表(List)

    Python数组列表 数组是一种有序的集合,可以随时添加和删除其中的元素. 一.数组定义: 数组是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 数组的数据项不需要具有相同的类 ...

  10. [SPOJ8222]Substrings

    [SPOJ8222]Substrings 试题描述 You are given a string S which consists of 250000 lowercase latin letters ...