【发布时间】:2014-08-11 11:57:55
【问题描述】:
所以现在我有了这个:hook 热键和一个正在检查 while 循环的 volatile bool。
UserActivityHook actHook;
private void Form1_Load(object sender, EventArgs e)
{
actHook = new UserActivityHook();
actHook.KeyPress += new KeyPressEventHandler(klawisze);
actHook.KeyDown += new KeyEventHandler(klawisze2);
actHook.Start();
}
public void pw()
{
while (!stopIt)
{
SetCursorPos(576, 363);
Thread.Sleep(50);
SetCursorPos(650, 363);
Thread.Sleep(50);
SetCursorPos(650, 430);
Thread.Sleep(50);
}
}
public void Stop()
{
stopIt = true;
}
private volatile bool stopIt;
public void dw()
{
while (!stopIt)
{
SetCursorPos(860, 350);
Thread.Sleep(50);
SetCursorPos(890, 350);
Thread.Sleep(50);
SetCursorPos(890, 380);
Thread.Sleep(50);
}
}
public void klawisze(object sender, KeyPressEventArgs e)
{
Thread w1 = new Thread(new ThreadStart(pw));
Thread w2 = new Thread(new ThreadStart(dw));
try
{
if (e.KeyChar == 21) //CTRL + SHIFT + U
{ //1
stopIt = false;
w1.Start();
if (e.KeyChar == 9)
{
Stop();
w1.Join();
}
}
if (e.KeyChar == 9) //CTRL + SHIFT + I
{ //2
stopIt = false;
w2.Start();
if (e.KeyChar == 21)
{
Stop();
w2.Join();
}
}
}
当我按下第一个热键然后第二个同时绘制 2 个三角形时,它不会关闭第一个绘图。这里有什么问题?
【问题讨论】:
-
嗯,我没有看到任何循环?你能把它们也贴出来吗?
-
已编辑 :) 谢谢回复
-
这是在 UI 线程上调用
Thread.Sleep的糟糕代码。你想在这里做什么?也许有更适合您的解决方案? -
我知道它的糟糕代码...地方(当第一个热键按下 - “写”第一个三角形等......)
-
为什么要反复画三角形?为什么每行之间会有延迟?
标签: c# multithreading winforms