【问题标题】:C# when mouse move event, time loop stopsC#当鼠标移动事件时,时间循环停止
【发布时间】:2017-05-13 17:40:16
【问题描述】:
我创建了一个游戏,你需要射击一个每隔 0.5 秒在屏幕上随机移动的鼹鼠。
当我在屏幕上不停地移动鼠标时,时间循环似乎会冻结,直到鼠标停止移动。
我有一个刷新到屏幕的鼠标移动事件,
以及每 0.5 秒更新一次表单的时间循环事件。我怎样才能让这两个事件在不相互干扰的情况下运行?
【问题讨论】:
标签:
c#
multithreading
events
event-handling
【解决方案1】:
您可以使用Backgroundworker。订阅 Backgroundworker 的 DoWork 事件。而且您可以计算您的计时器或观看该事件。
You can look here
【解决方案2】:
我无法正确理解您,但是根据您提供的线索,我可以建议您通过使用一种方法线程进程来解决问题。由于您要更改的是UIElement,因此您必须使用Begininvoke 方法。
public delegate void InvokeDelegate();
private void Invoke_Click(object sender, EventArgs e)
{
mole.BeginInvoke(new InvokeDelegate(InvokeMethod));
}
public void InvokeMethod()
{
// change your mole position here
}