如何异步初始化资源

时间:2018-05-21 06:48:47

标签: c# asp.net asynchronous asp.net-core async-await

我应该在所有客户端线程之间共享Task<ISomething>。此外,我还会为每个请求创建一次Worker课程services.AddScoped<Worker>()

在我的异步代码中初始化ISomething而不构建多次的正确方法是什么?

如果资源正在构建(调用webservice),则其他请求应异步等待,直到完成,然后继续。锁定也不是AFAIK的选择。 AsyncLazy好主意吗?

1 个答案:

答案 0 :(得分:0)

可以根据需要等待任务。

在这种特殊情况下,由于任务将在大部分时间内完成,scratch将是更好的选择。

我没有提及创建ValueTask<T>的详细信息,但您可以在大多数DI容器中注入ISomething