如何安全退出线程
How to Exit Threads Safely
我不得不使用线程(第一次),并注意到当我使用 ALT + F4 关闭表单时线程继续 运行。这绝对不是预期的结果,因为我需要此线程在退出时停止 运行ning。我目前有:
public void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs E)
{
Continue = false;
}
Boolean Continue = true;
int MouseX = Cursor.Position.X;
int MouseY = Cursor.Position.Y;
Point MousePosition;
public static void LockMouse()
{
Form1 Form = new Form1();
while (Form.Continue)
{
Form.MousePosition.X = 0;
Form.MousePosition.Y = 0;
Cursor.Position = Form.MousePosition;
}
}
这是线程的创建者:
public void CreteThread()
{
Thread Worker = new Thread(LockMouse);
Worker.Start();
}
我注意到线程在 ALT + F4 时保持打开状态,这将进入一个完全不希望的鼠标锁定!表格似乎没有达到关闭功能?
我想指出,因为一些用户可能认为这可能是恶意代码,因此会投反对票或出于错误的原因请求关闭。此应用程序正在创建并供我自己使用,不会分发
将您的线程声明为后台线程,当所有其他线程结束时它将被销毁:IsBackground。
无论如何...与您的第一个问题无关...不要使用 while 循环来获取坐标...使用 Eventhandler MouseMove 这将提高性能并且您可以摆脱线程。
我不得不使用线程(第一次),并注意到当我使用 ALT + F4 关闭表单时线程继续 运行。这绝对不是预期的结果,因为我需要此线程在退出时停止 运行ning。我目前有:
public void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs E)
{
Continue = false;
}
Boolean Continue = true;
int MouseX = Cursor.Position.X;
int MouseY = Cursor.Position.Y;
Point MousePosition;
public static void LockMouse()
{
Form1 Form = new Form1();
while (Form.Continue)
{
Form.MousePosition.X = 0;
Form.MousePosition.Y = 0;
Cursor.Position = Form.MousePosition;
}
}
这是线程的创建者:
public void CreteThread()
{
Thread Worker = new Thread(LockMouse);
Worker.Start();
}
我注意到线程在 ALT + F4 时保持打开状态,这将进入一个完全不希望的鼠标锁定!表格似乎没有达到关闭功能?
我想指出,因为一些用户可能认为这可能是恶意代码,因此会投反对票或出于错误的原因请求关闭。此应用程序正在创建并供我自己使用,不会分发
将您的线程声明为后台线程,当所有其他线程结束时它将被销毁:IsBackground。
无论如何...与您的第一个问题无关...不要使用 while 循环来获取坐标...使用 Eventhandler MouseMove 这将提高性能并且您可以摆脱线程。