Вот

отаю в Орлеане в режиме локальной кластеризации и в настоящее время у меня есть 1 зерно и клиент.

// client code
for (int i = 0; i <num_scan; ++i)                    
{
    Console.WriteLine("client " + i);
    // the below call should have returned when first await is hit in foo()
    // but it doesn't work like that
    grain.foo(i);          
}

// grain code
async Task foo(int i)
{
     Console.WriteLine("grain "+i);
     await Task.Delay(2000);
}

Результат этого был как ниже:

client 0
client 1
client 2
client 3
client 4
client 5
client 6
grain 0
client 7
client 8
client 9
client 10
grain 8
grain 7
.
.

Внормальный C #, асинхронная функция возвращается только когдаawait, В этом случае выход зерна должен был быть последовательным. Как мы видим выше, выходы зерна не в порядке. Итак, задание возвращается, прежде чем ударитьawait&nbsp;заявление.Мой вопрос, в чем разница между вызовом метода в Орлеане и обычным C #.

Я виделэта почта&nbsp;который задает аналогичный вопрос, и ответы предполагают, что два случая вызова методов различны, потому что мы вызываем интерфейс в Орлеане.Я хотел бы знать, когда вызов метода возвращается в Орлеане.

PS:&nbsp;Я попробовал приведенный выше код сawait grain.foo()&nbsp;и печатает вывод зерна по порядку. Но проблема с этим подходом заключается в том, что ожидание возвращается только тогда, когда завершается весь foo (), тогда как я хочу, чтобы оно возвращалось, когда оно достигает оператора await.