事件在循环中延迟

时间:2015-07-26 12:56:31

标签: c# events event-handling hook mouse

我在项目中使用来自this页面的全局鼠标钩子。我希望鼠标在单击时移动指定的路径,但是如果我放开鼠标按钮则会中断,但由于某种原因,HookManager_MouseUp将不会触发直到我的for循环中的大约175个循环(forloop用于移动)鼠标)。 (那应该是大约0.4秒)。无论我按下鼠标按钮多长时间,它只会在0.4秒后停止循环。如果我等待的时间超过了它,那么当我放开鼠标按钮时它会立即停止循环。

    public void MoveMouse()
    {
        btm = new Bitmap(2000, 2000);
        for (int i = 0; i < BézierPointList.Count; i++)
        {
            if (!run) { break; }
            this.Cursor = new Cursor(Cursor.Current.Handle);
            Cursor.Position = new Point((int)BézierPointList[i].X(), (int)BézierPointList[i].Y());
            Graphics g = Graphics.FromImage(btm);
            g.DrawRectangle(new Pen(Color.Red), (int)BézierPointList[i].X(), (int)BézierPointList[i].Y(), 1, 1);
            Application.DoEvents();
            System.Threading.Thread.Sleep(2);
        }
        CreateGraphics().DrawImage(btm, 0, 0);
    }

(图形用于调试)。 有没有办法更新事件,或者我可以做些什么来解决这个问题?谢谢! (C#)

编辑: 我的Form1.Designer.cs包含此代码(以及其他) Gma.UserActivityMonitor.HookManager.MouseDown += HookManager_MouseDown; Gma.UserActivityMonitor.HookManager.MouseUp += HookManager_MouseUp; 方法HookManager_MouseUp和HookManager_MouseDown进入MoveMouse()并制动它。延迟发生在HookManager_MouseUp之前(HookManager_MouseUp几乎瞬间打破了循环)。

0 个答案:

没有答案