wpf检测点击事件已完成,不会延迟主进程

本文关键字:延迟 进程 已完成 检测 事件 wpf | 更新日期: 2023-09-27 17:57:30

我需要从点击事件中检测到一个过程已经完成,而不会延迟主wpf进程。。

我不想要的东西

public void click_event(object sender,routedeventargs)
{
        <launch a bunch of threads>
        while(<threads.are alive>);

        <code for what i want to do after threads are done>
}
public void threadtask()
{}

我刚才做了什么

 public void click_event()
   {
         foreach(<thread>)
           <give thread task and start() each>
   }
   }

但这不会检测线程何时完成。。这里需要帮助。谢谢

wpf检测点击事件已完成,不会延迟主进程

您要求的是两种不同的东西。你希望主线程不被阻塞,但你想在其他线程完成时做一些事情(你必须等待)。考虑从一个新线程启动线程,然后让另一个线程来完成工作。类似这样的东西:

public void click_event() 
{
    <start new thread>
         <foreach(thread in threads)>
            <do work>
         <join threads>
         <do your work here>
}

所以所有的工作都在不同的线程上,甚至是你之后想做的工作。考虑到这一点,您是否需要一个以上的工作线程?

查看本文

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        this.ClickMe.Click += new RoutedEventHandler(ClickMe_Click);
    }
    void ClickMe_Click(object sender, RoutedEventArgs e)
    {
        BackgroundWorker bw = new BackgroundWorker();
        bw.DoWork += (workSender, workE) =>
        {
            string argument = (string)workE.Argument;
            // argument == "Some data"
            System.Threading.Thread.Sleep(2000);
        };
        bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
        bw.RunWorkerAsync("Some data");
    }
    void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        this.ResultsTextBlock.Text = "I'm done";
    }
}