gpt4 book ai didi

c# - 只有当所有异步操作都完成时,我怎样才能让我的应用程序继续运行?

转载 作者:行者123 更新时间:2023-11-30 14:00:59 25 4
gpt4 key购买 nike

在我的应用程序中,我过去常常创建异步操作字符串,这些操作传入如下函数:

public void LotsOfAsync()
{
DoAsync1( ()=> { DoAsync2( ()=> { doAsync3( ()=> { finalAction();}) } ) } );
}

但是,现在我已将许多异步操作移到单独的类和对象中,但我想要相同的结果。主要是我将那些异步操作移到了类中,这些类成为集合的一部分。

我希望我的新代码看起来像这样:

public void lotsOfAsync()
{
DoAsync1();
for each ( MyClass in Async1List)
{
MyClass.DoAsyn2();
}
if (allAsyncOperationsAreComplete)
{
FinalAction();
}
}

我需要做什么才能让它发挥作用?谢谢。


使用下面关于任务的答案,似乎仍然缺少一些东西。即使将所有内容都扔到 BackgroundWorker 中,该程序也不会继续。

最佳答案

您可以使用 Task<T> (使用 Task Parallel Library for Silverlight )- 可能是这样的:

List<Task> tasks = new List<Task>();

Task.Factory.StartNew(() => DoAsync1()).ContinueWith(_ =>
{
foreach (MyClass myClass in Async1List)
{
tasks.Add(Task.Factory.StartNew(() => myClass.DoSomething()));
}
Task.WaitAll(tasks.ToArray());
FinalAction();
});

关于c# - 只有当所有异步操作都完成时,我怎样才能让我的应用程序继续运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9361601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com