从客户端(AngularJS)调用webapi“Test”。它执行Line1,Line2和Line3但它挂在Line3并且从未移动到Line4,如果在单元测试项目的单元测试中执行,则相同的Line1,Line2和Line3执行正常。任何人都可以帮忙解决这个问题吗?
[Route("Test")]
[HttpGet]
public IHttpActionResult Test(string input)
{
var taskA = Dump(a, b); //Line1
var taskB = Dump(c, d); //Line2
Task.WaitAll(taskA, taskB); //Line3
Line4;
Line5;
Line6;
Ok(success);
}
转储方法:
public async Task Dump(string x, string y)
{
await Task.Run(() => methodToDump(x, y));
}
答案 0 :(得分:0)
您需要将api方法配置为异步并返回任务。
像这样实施
[Route("Test")]
[HttpGet]
public async Task<IHttpActionResult> Test(string input)
{
var taskA = Dump(a, b); //Line1
var taskB = Dump(c, d); //Line2
await Task.WhenAll(taskA, taskB); //Line3
Line4;
Line5;
Line6;
Ok(success);
}
答案 1 :(得分:0)
您还需要将转储功能更改为
public async Task Dump(string x, string y)
{
await Task.Run(() => methodToDump(x, y)).ConfigureAwait(false);
}
等待后没有代码,因此无需强制继续捕获的SynchronizationContext