线程执行结果不确定,同样代码多个结果。

需求是按下左键开始连点(鼠标连点器),松开停止。
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(MouseListen);
t.IsBackground = true;
t.Start();
}

    private void button2_Click(object sender, EventArgs e)
    { }     

    void MouseListen()
    {
        while (true)
        {
            if (GetAsyncKeyState(1) != 0)
            {
               dm.LeftClick();

            }

        }

    }

有时候松开不停止,有时候不练点。问题出在哪里。

线程是不可控的,它是什么时候执行不是固定的,所以有的时候你的 if (GetAsyncKeyState(1) != 0)这个判断,可能会出现问题导致你所说的问题。