C# Net控制台应用程序中的异步编程

C# Net控制台应用程序中的异步编程,c#,.net,multithreading,async-await,console-application,C#,.net,Multithreading,Async Await,Console Application,我有一个应用程序解压文件夹和合并文件,我想在这里使用异步,我想一个线程解压文件夹和另一个线程合并解压文件夹中的文件,一旦解压线程完成其任务,应用程序应该等待合并线程完成。合并线程(子线程)依赖于解压缩线程(父线程) 下面是我正在使用的代码 在program.cs文件中 var t1= Task.Factory.StartNew(() => { obj.UnZipFiles(files, formats); });

我有一个应用程序解压文件夹和合并文件,我想在这里使用异步,我想一个线程解压文件夹和另一个线程合并解压文件夹中的文件,一旦解压线程完成其任务,应用程序应该等待合并线程完成。合并线程(子线程)依赖于解压缩线程(父线程) 下面是我正在使用的代码 在program.cs文件中

var t1= Task.Factory.StartNew(() =>
    {                       
       obj.UnZipFiles(files, formats);
    });
内部解压.cs文件

var t2= Task.Factory.StartNew(() =>
    {
        obj.MergeFiles();
    });
在program.cs文件中,我有

Task.WaitAll(t1); 
我的应用程序没有等待子线程完成,
任何帮助都将不胜感激。

创建第二个任务时,请使用Continuation

例如


这将确保第二个任务仅在第一个任务完成时触发。

如果步骤2只能在步骤1之后执行,则没有并发和异步。你确定你了解这个问题吗?听起来你是从一个不存在的问题的解决方案开始的。你在说什么“子线程”?BTW.这里我们处理的是<代码>任务<代码> s,而不是线程。@ UR考虑一个例子:2个zip文件夹,每个都有10个文件,我希望应用程序完成第一个zip文件夹的解压缩,并开始合并其中的10个文件,并行地,应该开始解压缩第二个zip文件夹,而应用程序正在从第一个zip文件夹中合并文件,这更有意义。谢谢你的建议,我想这会使任务同步,如果我是,请纠正我wrong@Kiran_Ray根据我的理解,这将是一种“某种”同步处理,因为当第一个任务结束时,第二个任务将在不同的线程上运行。如果传入
TaskContinuationOptions.executes synchronously
,则第二个任务将与第一个任务在同一线程上运行,使其真正同步。@另一方面,如果您需要等待第一个任务的结果,因为在第一个任务完成之前无法执行任何其他操作,则Kiran_Ray。。。那么,使用任务可能没有多大意义?下面的示例将为您提供清晰的图片2个zip文件夹,每个文件夹有10个文件,我希望应用程序完成第一个zip文件夹的解压并开始合并其中的10个文件,同时应开始解压第二个zip文件夹,而应用程序正在合并第一个zip文件夹中的文件
var t1 = new Task(() => obj.UnZipFiles(files, formats));
var t2 = t1.ContinueWith((t) => obj.MergeFiles());
t1.Start();