微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在无限循环中使用C#移动鼠标光标?

如何解决如何在无限循环中使用C#移动鼠标光标?

我在Windows窗体应用程序中找到了一个通过此URL移动光标的解决方案。
How to move mouse cursor using C#? 但是因为我想无限运行但要休息一下,以便当我想要停止它时,它应该停止在这里,这是我想要达到的目标。

    private void btnMove_Click(object sender,EventArgs e)
    {
        //int i = 0;
        while (true)
        {
            //i++;
            Cursor = new Cursor(Cursor.Current.Handle);
            Cursor.Position = new Point(Cursor.Position.X - 40,Cursor.Position.Y - 40);
            Thread.Sleep(5000);
            Cursor.Position = new Point(Cursor.Position.X + 40,Cursor.Position.Y + 40);
        }

        //Task t = new Task(() =>
        //{
        //});
        //t.Start();
    }

它有效,但是冻结了我的代码。我只想运行它,每当我要停止它时,它都应该停止而不冻结。

解决方法

最终,这里的答案是:“不要”。

Windows表单基于消息泵。如果您有一条消息(例如“单击”)永远循环的事件处理程序,它将永远无法处理其他消息(例如“绘制”),因此:您的应用程序现在无响应。

代替无限循环:使用Timer,然后在回调中移动位置。在这种情况下,最适合使用System.Windows.Forms.Timer

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。