我创建一个asp.net的WebAPI测试应用程序,这是我的测试代码:为什么这么慢,.NET任务巢子任务
当我使用result = index.ToString() + this.getresult().Result;
,响应时间为2s。如果我使用Thread.Sleep(100); result = index.ToString();
,它只需要200ms。
public class HomeController : Controller
{
public string Test()
{
var listName = new List<int>();
for (int i = 0; i < 100; i++)
{
listName.Add(i);
}
var response = Task.WhenAll(listName.Select(sendrequest)).Result;
return string.Join(",", response);
}
public async Task<string> sendrequest(int index)
{
return await Task.Factory.StartNew(() =>
{
string result = string.Empty;
try
{
Thread.Sleep(100); result = index.ToString();
//result = index.ToString() + this.getresult().Result;
}
catch (Exception ex)
{
System.IO.File.AppendAllText("D:\\WebService\\FelixTest\\log.txt",ex.ToString());
}
return result;
}).ConfigureAwait(false);
}
public async Task<string> getresult()
{
await Task.Delay(100);
return "OK";
}
}
可能是因为您在getresult方法中使用延迟? – ThunD3eR
你是如何测量时间的?在你的'延迟'只有100(毫秒,默认情况下),所以它不应该需要2秒...但它可能取决于你如何测量运行应用程序所需的时间。 – Shaamaan