如何安全地退出线程

时间:2015-01-11 17:10:22

标签: c# multithreading threadpool

我必须使用Threads(第一次),并注意到当我用ALT + F4关闭表单时线程继续运行。这绝对不是预期的结果,因为我需要这个线程在退出时停止运行。我目前有:

    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进入完全鼠标锁定时,线程保持打开状态!看来表格还没有达到结算功能?

我想指出,因为有些用户可能会将此视为可能的恶意代码&相应地下注或因错误原因请求关闭。此应用程序正在创建并供我自己使用。不会分发

1 个答案:

答案 0 :(得分:1)

将您的线程声明为后台线程,当所有其他线程结束时它将被销毁:IsBackground。

无论如何......没有任何与你的第一个问题有关...不要使用while循环来获取坐标...使用Eventhandler MouseMove这将更高效,你摆脱了你的线程。