我不确定为什么会出现“并非所有代码路径都返回值”错误(请参阅下面的注释代码)。是不是因为 foreach 循环被认为不是一条路径而是多条路径,并且迭代可能不会返回值而循环会继续?
[顺便说一句,我的目标是处理 10 万个 url,创建许多 Web 请求,以便它们同时处于活动状态,并且能够在更新 UI 时捕获每个 url 的状态(活动、移动、超时),因为一组 url 正在使用有关到目前为止发现的错误 url 数量和到目前为止处理的数量或 url 的实时信息进行处理。我已经尝试使用 Parallel.ForEach 方法处理同步 Web 请求,但 UI 变得无响应。]
如果 Rows.Count == 0,则编辑为包含测试。
public async Task<UrlInfo> ProcessUrls(DataTable urls)
{
if (urls.Rows.Count == 0)
{
return new UrlInfo();
}
else
{
foreach (DataRow r in urls.Rows)
{
UrlInfo info = new UrlInfo()
{
Url = (string)r["url"],
status = UrlStatusCode.untested,
articleid = (int)r["articleid"]
};
return await Foo(info);
}
}
//return new UrlInfo(); // error unless this line is uncommented
}
public async Task<UrlInfo> Foo(UrlInfo info) {
<snip>
}