如何使用C#使用while无限循环移动鼠标光标



我在Windows窗体应用程序中找到了一个通过此URL移动光标的解决方案
如何使用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将是最合适的。

最新更新