请问程序执行顺序颠倒的有关问题
请教程序执行顺序颠倒的问题
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, x1, y1, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN, x1, y1, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, x1, y1, 0, 0);
Thread.Sleep(5000);
MeasureOne();
要实现的功能:把鼠标移动到桌面指定位置,之后单击左键,等待5秒,执行MeasureOne()
现在发现程序的执行顺序是:鼠标移到指定位置,等待5秒,再单击,再执行MeasureOne()。
怎么执行顺序会变呢?好奇怪。
------解决思路----------------------
看起来是你发了消息还没执行呢,就sleep了。sleep后,线程就不执行了,也就没法处理消息了。
------解决思路----------------------
我不知道你单击到底操作什么东西了,如果是单击的外部窗体(外部程序,另一个进程),那么不会出现这样的问题
而如果你单击的是自己程序的窗体,你使用了sleep让主线程挂起了,那么即使单击了,界面也不会响应,要等休眠时间到了,才开始响应
所以其实是5秒之前就已经点了,但是要等到5秒之后才开始执行
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, x1, y1, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN, x1, y1, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, x1, y1, 0, 0);
Thread.Sleep(5000);
MeasureOne();
要实现的功能:把鼠标移动到桌面指定位置,之后单击左键,等待5秒,执行MeasureOne()
现在发现程序的执行顺序是:鼠标移到指定位置,等待5秒,再单击,再执行MeasureOne()。
怎么执行顺序会变呢?好奇怪。
------解决思路----------------------
看起来是你发了消息还没执行呢,就sleep了。sleep后,线程就不执行了,也就没法处理消息了。
------解决思路----------------------
我不知道你单击到底操作什么东西了,如果是单击的外部窗体(外部程序,另一个进程),那么不会出现这样的问题
而如果你单击的是自己程序的窗体,你使用了sleep让主线程挂起了,那么即使单击了,界面也不会响应,要等休眠时间到了,才开始响应
所以其实是5秒之前就已经点了,但是要等到5秒之后才开始执行