如何使用previewMouseUp打破无限循环
本文关键字:无限循环 previewMouseUp 何使用 | 更新日期: 2023-09-27 17:57:47
目前,我开始在PreviewMouseDown
上循环,我想用PreviewMouseUp
打破循环,但显然失败了。以下是我的做法。
public bool stopFlag = true;
public int abc = 0;
private void TestingDown(){
while(stopFlag)
{
abc++;
}
}
private void TestingUp()
{
stopFlag = false;
Message.show(abc);
}
实际上,我的想法是创造一种按住按钮的效果,就像智能手机一样,按住一个按钮3秒钟,然后做一些事情。但是按钮没有任何onHold
事件?
在PreviewMouseDown
中启动Timer
,并在PreviewMouseUp
中检查运行时间。
在这种情况下,循环与整个UI在同一个线程中运行。但实际上,您需要计算MouseDown和MouseUp事件之间的时间。
DateTime holdStartTime;
public MainWindow()
{
InitializeComponent();
PreviewMouseDown += new MouseButtonEventHandler(MainWindow_PreviewMouseDown);
PreviewMouseUp += new MouseButtonEventHandler(MainWindow_PreviewMouseUp);
}
void MainWindow_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
holdStartTime = DateTime.Now;
}
void MainWindow_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
if ((DateTime.Now - holdStartTime).TotalMilliseconds < 1000)
{
Console.WriteLine("Do something");
}
else
{
Console.WriteLine("Do something else");
}
}
我认为你需要后台线程来完成这项工作,因为UI线程在这个循环中很忙。您可以参考下面的链接了解更多信息。[后台工作人员]