如何使用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事件?

如何使用previewMouseUp打破无限循环

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线程在这个循环中很忙。您可以参考下面的链接了解更多信息。[后台工作人员]