我需要等待整个任务完成然后返回一个值。我的代码给了我一个“并非所有代码路径都返回值”的错误。你能告诉我如何解决这个问题吗?我真的对任务感到困惑。
public async override Task<TagInfoReply> GetInfo(TagInfoRequest request, ServerCallContext context)
{
var tagInfo = JsonSerializer.Deserialize<TagInfo>(request.TagInfo);
var parameter = JsonSerializer.Deserialize<ParameterGetWhiteListWithEntryInfo>(request.DetectedTag);
var task = Task.Run(() =>
{
return filters.FilterTags(tagInfo);
});
await task.ContinueWith(
async antecedent =>
{
if (antecedent.Result)
{
var reply = await pcs.GetTagInfo(parameter, tagInfo, TagFilterTime);
return new TagInfoReply
{
FetchedTagInfo = reply
};
}
else
{
return new TagInfoReply
{
FetchedTagInfo = string.Empty
};
}
}, TaskContinuationOptions.OnlyOnRanToCompletion);
}
如果我放一个
return new TagInfoReply
{
FetchedTagInfo = string.Empty
};
在任务的最后和外部。继续,错误消失了,但问题是当它运行时,它不会等待任务完成。它直接进入最后一个返回。