Вы можете просмотреть документацию для async / await для c#: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/
Каждый async
метод требует соответствия await
в вашем коде, которым вы являетесь не ожидая результата задачи, так что ...
result.InstantiateAsync(.....
Требуется ожидание:
await result.InstantiateAsync(.....
Но это имеет эффекты, которые вам понадобятся для выполнения функции async
:
public Dictionary_String_Prop GeneratePlaceables(List<PropData> props, Prop parent = null)
Необходимо изменить на:
public async Task<Dictionary_String_Prop> GeneratePlaceables(List<PropData> props, Prop parent = null)
Любой метод, вызывающий GeneratePlaceables
, также нуждается в await
: Зачем использовать Async / await до конца
Если вы не можете вносить изменения в свои функции, существует другой метод, при котором вы можете синхронно ожидать результат:
Foo foo = GetFooAsync(...).GetAwaiter().GetResult();
Итак:
result.InstantiateAsync(....).GetAwaiter().GetResult();
Это не потребует изменений функции и т. Д. c ...
Надеюсь, это поможет