如何解决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\";
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。