BIL*_*ILL 4 c# foreach asynchronous
我有一些异步方法
public static Task<JObject> GetUser(NameValueCollection parameters)
{
return CallMethodApi("users.get", parameters, CallType.HTTPS);
}
Run Code Online (Sandbox Code Playgroud)
我在下面写了方法
public static IEnumerable<JObject> GetUsers(IEnumerable<string> usersUids, Field fields)
{
foreach(string uid in usersUids)
{
var parameters = new NameValueCollection
{
{"uids", uid},
{"fields", FieldsUtils.ConvertFieldsToString(fields)}
};
yield return GetUser(parameters).Result;
}
}
Run Code Online (Sandbox Code Playgroud)
这个方法是异步的?如何使用 Parallel.ForEach 编写此代码?
有点像这样。
public static IEnumerable<JObject> GetUsers(IEnumerable<string> usersUids, Field fields)
{
var results = new List<JObject>
Parallel.ForEach(usersUids, uid => {
var parameters = new NameValueCollection
{
{"uids", uid},
{"fields", FieldsUtils.ConvertFieldsToString(fields)}
};
var user = GetUser(parameters).Result;
lock(results)
results.Add(user);
});
return results;
}
Run Code Online (Sandbox Code Playgroud)
注意:结果的顺序与您期望的顺序不同。
| 归档时间: |
|
| 查看次数: |
5305 次 |
| 最近记录: |