gpt4 book ai didi

c# - Windows Phone,多个 HTTP 请求并行,有多少?

转载 作者:太空狗 更新时间:2023-10-30 01:19:52 26 4
gpt4 key购买 nike

在我的 Windows Phone 8 应用程序中,我从 Web API 获取项目列表。之后我循环所有项目并获取每个项目的详细信息。

现在我的代码是这样的:

List<plane> planes = await planeService.getPlanes(); // Get all planes from web api

foreach(Plane plane in planes)
{
var details = await planeService.getDetails(plane.id); // Get one plane details from web api

drawDetails(details);
}

我如何改进它以并行发出多个请求以及并行运行的请求的合理数量是多少?平面列表可以包含 0 到 100 个对象,通常最多 20 个。

最佳答案

How can I improve this to make multiple request in parallel?

您可以像下面那样进行并行处理(未经测试)。它使用 SemaphoreSlim 来限制 getDetails 请求。

async Task ProcessPlanes()
{
const int MAX_REQUESTS = 50;

List<plane> planes = await planeService.getPlanes(); // Get all planes from web api

var semaphore = new SemaphoreSlim(MAX_REQUESTS);

Func<string, Task<Details>> getDetailsAsync = async (id) =>
{
await semaphore.WaitAsync();
try
{
var details = await planeService.getDetails(id);
drawDetails(details);
return details;
}
finally
{
semaphore.Release();
}
};

var tasks = planes.Select((plane) =>
getDetailsAsync(plane.id));

await Task.WhenAll(tasks.ToArray());
}

what is resonable number of request running parallel? The planes list can be anything from 0 to 100 objects, typically max 20.

这在很大程度上取决于服务器,但我认为没有最终的答案。例如,检查这个问题:

A reasonable number of simultaneous, asynchronous ajax requests

就 WP8 客户端而言,我相信它可以毫无问题地产生 100 个并行请求。

关于c# - Windows Phone,多个 HTTP 请求并行,有多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21522790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com