异步操作永远不会在asp.net中完成

时间:2016-10-05 04:10:52

标签: c# asp.net async-await face-api

我正在尝试使用Microsoft Face Api,我现在已经坚持使用这段代码几个小时了:

<ol style="list-style-type: list-alpha;">

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

在asp.net中使用async时,您的代码可能会出现死锁。

希望link可以提供帮助。

我知道这不是答案,但我没有足够的声誉来发表评论。

答案 1 :(得分:0)

当您await使用DetectAsync()之类的异步方法时,它不会返回Task<T>,而是返回T本身。

faces变量改为Microsoft.ProjectOxford.Face.Contract.Face[]而不是Task<Microsoft.ProjectOxford.Face.Contract.Face[]>

Microsoft.ProjectOxford.Face.Contract.Face[] faces = await f.DetectAsync("...");

或者,您可以使用DetectAsync(ImageStream)重载。

我以前使用下面的方法在string中使用了表示为bytearray的图像。

using (var ms = new MemoryStream(Convert.FromBase64String(image)))
{
    var faces = await faceServiceClient.DetectAsync(ms);
}