wpf检测到单击事件已完成而没有延迟主过程

问题描述

| 我需要在不延迟主wpf流程的情况下从click事件检测到一个过程已完成。 我不想要的
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>
   }
   }
但这无法检测线程何时完成..在此需要帮助。谢谢。     

解决方法

您要的是两种不同的东西。您希望主线程不被阻塞,但是您想在其他线程完成时做一些事情(必须等待)。考虑从新线程启动线程,然后让其他线程执行工作。像这样:
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\";
    }

}