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>
}
}
但这不会检测线程何时完成。。这里需要帮助。谢谢
您要求的是两种不同的东西。你希望主线程不被阻塞,但你想在其他线程完成时做一些事情(你必须等待)。考虑从一个新线程启动线程,然后让另一个线程来完成工作。类似这样的东西:
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";
}
}