异步调用许多方法,并在每个方法完成后执行某些操作
本文关键字:方法 执行 操作 许多 调用 异步 | 更新日期: 2023-09-27 18:35:37
所以这是交易。我有所有实现相同interface
的对象列表。让我们将此列表称为things
。由于things
中的每个thing
都实现了相同的接口,我知道它们具有方法调用DoStuff(StuffParams stuffParams)
。我想为每个thing
异步调用此方法,并在每个完成时执行一些操作。所以更具体地说。
public void CreateSomething(Something something)
{
ValidateSomething(something);
someDAL.AddSomething(something);
AddSomethingToMonitor(something);
var things = someService.GetThings();
// every thing in things has method DoStuff
// invoke thing.DoStuff for each thing in things and return to caller
}
// when those methods return something should happen
// but I don't know where to write that code. Inside CreateSomething or outside.
我想我应该使用异步和等待关键字来实现我想要的,但我不知道如何实现。
有几种可能性,包括任务和.ContinueWith()
,但最直接的方法是:
Parallel.ForEach (things, thing =>
{
// Invoke thing.DoStuff with some specific parameters asynchronously.
// Do something when a single one returns
});
// Do something when all methods have returned.
例如取消的变化是可能的。