请教程序执行顺序颠倒的问题 经实验,不用Thread.Sleep(5000); 而是用timer定时可以解决此问题。可是为什么呢?我对于线程的工作方式不是特别了解。求高人指点一二。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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);执行到这里,CPU已进入睡眠了,CPU挂起,造成单击延迟了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);//下面这两条要等5秒后才会执行mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, x1, y1, 0, 0);现在发现的是第一条鼠标移动的指令可以马上有反应,即鼠标可以马上我要击的按钮上,但是要等5秒后才会点击该按钮。这才是我觉得最奇怪的地方。此问题应该是和CPU休眠有关,但休眠时机有点诡异。另外,为什么用timer定时器就可以避开此问题?我对timer定时和sleep定时的机理还不了解。 C#如何调用GDI+在内存中画图并保存到本地? 删除IE临时文件夹下的所有文件 已知一个按钮句柄,怎样使它产生按下的动作呢 那位高手使用C#做过抓取网页栏目的链接和名称的 超级诡异的dataGridView的刷新问题 弱弱地问一下System.Threading.Timer 暂停方法 DropDownList 求高人 请教各位大哥,winform登录后怎么把登录信息存到xml中??? 请问下屏幕的宽度??? 再说combobox的绑定问题 C# Socket 异步通讯疑问 C# 调用win32 api时,发送WM_CLICK消息的问题
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN, x1, y1, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, x1, y1, 0, 0);
Thread.Sleep(5000);执行到这里,CPU已进入睡眠了,CPU挂起,造成单击延迟了5秒
MeasureOne();
所以其实是5秒之前就已经点了,但是要等到5秒之后才开始执行
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN, x1, y1, 0, 0);//下面这两条要等5秒后才会执行
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, x1, y1, 0, 0);现在发现的是第一条鼠标移动的指令可以马上有反应,即鼠标可以马上我要击的按钮上,但是要等5秒后才会点击该按钮。这才是我觉得最奇怪的地方。
此问题应该是和CPU休眠有关,但休眠时机有点诡异。
另外,为什么用timer定时器就可以避开此问题?我对timer定时和sleep定时的机理还不了解。