c# – 从Parallel.For获取结果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 从Parallel.For获取结果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1561字,纯文字阅读大概需要3分钟。
内容图文
![c# – 从Parallel.For获取结果](/upload/InfoBanner/zyjiaocheng/790/c0ec7889ed3a45a59bb4f2c04640002f.jpg)
我正在使用Parallel.For调用一个需要一段时间才能返回的Web服务,但是,我们知道我们可以同时调用它多次,并且它不会比单个调用花费更长的时间.
为此,我正在尝试Parallel.For,我真的想要检查一下我的想法是如何工作的.我可能有点过于谨慎,因为我不想搞砸应用程序,我想确保如果我们走这条路线,整个应用程序团队都知道在访问并行代码时需要做些什么.
无论如何,这是我目前的工作和理解.
public IEnumerable<HotelAvail> GetAvailability (IList<string> codes, DateTime startDate, int numNights)
{
HotelAvail[] result = new HotelAvail[codes.Count];
Parallel.For(0, codes.Count, i =>
{
string code = codes[i];
result[i] = new AvailService().
GetAvailability(
code, startDate, numNights);
});
return result;
}
AvailService获取指定日期范围(startDate numNights)的房间可用性.代码是属性的标识符.
我在开始时设置了一个具有大量空插槽的正确大小的结果数组.
然后我并行调用该服务.该服务创建一个新的HotelAvail对象,并将其放在数组中的正确位置.
完成所有操作后,我返回数组.它应该在这一点上完全填充.应该没有空白.该服务不会影响系统状态的任何其他部分 – 它只是构建一个Web服务调用,调用它,并返回一个结果对象.
我有没有看到任何问题.
就像我上面所说的那样,我可能过于谨慎,但是我在更年轻和充满活力的日子里编写多线程代码而感到厌烦,我不想再犯同样的错误.
此外,此代码最终将在ASP.NET应用程序中结束.我依稀回忆起它对多线程代码抱怨很多.我可能遇到的任何其他问题?
解决方法:
虽然我认为PLINQ会更优雅一点,但对我来说还不错:
public IEnumerable<HotelAvail> GetAvailability (IList<string> codes,
DateTime startDate,
int numNights)
{
return codes.AsParallel().AsOrdered().Select(code =>
new AvailService().GetAvailability(code, startDate, numNights))
.ToList();
}
内容总结
以上是互联网集市为您收集整理的c# – 从Parallel.For获取结果全部内容,希望文章能够帮你解决c# – 从Parallel.For获取结果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。