2010-10-20 458 views
2

我有两个复选框和一个按钮。在按钮点击处理程序下,WPF:非阻塞UI

private void button1_Click(..) 
{ 
if(checkbox1.true) { //start a process } 
if(checkbox2.true) { //start process 2 once process 1 is done} 

} 

进程1和2都是异步启动的。我如何设置进程2和进程1之间的依赖关系?我不想在启动进程2之前进行进程1的调查。这会阻止用户界面。还有其他解决方案吗?

感谢

回答

1

实现后台工作做的过程1

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

在你runworker完成的活动检查,看是否复选框2被选中

//copy and pasted from msdn 

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
    { 
        if (e.Cancelled == true) 
        { 
         //dosomething 
        } 
        else if (e.Error != null) 
        { 
         //dosomething 
        } 
        else 
        { 
         if(checkbox2.Checked) 
         { 
          //fire off process 2 
         } 
        } 
       } 
1

您可以在Exited事件Process类的挂钩。

东西线沿线的:

Process p = ... 
if(checkbox2.Checked) 
    p.Exited = ... // Event handler that starts process 2 

p.Start()