异步调用许多方法,并在每个方法完成后执行某些操作

本文关键字:方法 执行 操作 许多 调用 异步 | 更新日期: 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.

例如取消的变化是可能的。