【c# – 为什么Parallel.ForEach改变了它的线程文化?】教程文章相关的互联网学习教程文章

c# – 设置FOREACH中项目的顺序【代码】

我的控制器将一个对象列表传递给我的视图,允许我:@foreach (var optiongroup in Model){在Model中是IEnumerable< Option>.我需要对这个选项列表进行排序,这样当我:@foreach (var option in optiongroup.Options){我最终得到一个列表,其中项目在名为option.SortOrder的属性上排序,而不是每个项目的序号位置. 那么如何在foreach之前获取一个列表?我试过了:@foreach (var option in optiongroup.Options.OrderByDescending(o => o...

c# – 为什么在foreach for XmlNode中使用的var不推导出实际类型,只推导出对象?【代码】

让cls为XmlNode类型 以下语句允许我访问子节点:foreach (XmlNode child in cls.ChildNodes)现在当我尝试使用var:foreach (var child in cls.ChildNodes)那么子类型不是XmlNode,只是对象.我不能使用child.NodeType,编译器说:object’ does not contain a definition for ‘NodeType为什么是这样?解决方法:ChildNodes的类型为XmlNodeList,定义为public abstract class XmlNodeList : IEnumerable, IDisposable它的枚举器返回一个...

c# – 如何在剃须刀foreach中使用html和escape razor?【代码】

如何在剃须刀foreach中构建我的html?我在foreach里面得到“无法解决tbody”. 我的代码:function loadNyhedsbrevTable() {var tbody = "";$('#NyhedsbrevTable tbody').empty();@foreach (string n in ViewBag.NyhedsbrevListe){ tbody = '<tr><td>' + n + '</td></tr>';}$('#NyhedsbrevTable tbody').append(tbody); }我需要这样的东西吗? < not razor> tbody =’< tr>< td>‘ @n< not razor>‘< / td>< / tr>‘;解决方法:这是你...

c# – Parallel.ForEach缺少项目【代码】

我有以下代码:HttpContext httpContext = HttpContext.Current; RequestContext currentContext = RequestContextManager.CurrentContext; ILifetimeScope currentSessionScope = PlatformContext.LifeTimeScope;ConcurrentQueue<Exception> exceptions = new ConcurrentQueue<Exception>(); ConcurrentBag<ParallelCalculateObj> forEachResult = new ConcurrentBag<ParallelCalculateObj>(); ConcurrentBag<ParallelCalculateOb...

c# – 当我处理多种数据类型时,如何处理多个foreach循环【代码】

我有一个困扰我一段时间的问题,它关系到我程序中循环的增长呈指数级增长.我将让下面的代码进行讨论并在其中添加注释.void Main() {//Here we are just creating simple listsList<string> strings = new List<string>();strings.Add("a");strings.Add("b");strings.Add("c");List<int> integers = new List<int>();integers.Add(1);integers.Add(2);integers.Add(3);//Creating complex classes ( not really )ComplexClass cc1 = ...

c# – parallel.foreach和httpclient – 奇怪的行为【代码】

我有一段代码循环遍历集合,并为每次迭代调用httpclient. httpclient调用的api平均需要30-40ms才能执行.顺序调用它,我得到预期的结果,但是一旦我使用Parallel.foreach,它需要更长的时间.仔细查看日志,我可以看到很多httpclient调用需要1000ms才能执行,然后时间会回落到30-40ms.查看api日志,我可以看到它几乎没有超过100毫秒.我不知道为什么我会得到这个高峰. 代码是using (var client = new HttpClient()) {var content = new Strin...

C#使用ForEach进行枚举时修改IEnumerable【代码】

这是我正在探索的东西,看看我是否可以采取的是什么List<MdiChild> openMdiChildren = new List<MdiChild>(); foreach(child in MdiManager.Pages) {openMdiChildren.Add(child); }foreach(child in openMdiChild) {child.Close(); }并缩短它不需要2个foreach循环. 注意我已经更改了调用对象的内容以简化此示例(这些来自第三方控件).但是为了获得信息和理解MdiManager.Pages继承表单CollectionBase,后者继承IEnumerable 和MdiChild....

c# – ListView中的Foreach子项【代码】

我希望能够遍历每个ListViews子项并从每个子项中获取值.我尝试了各种各样的东西,但我发现很难从第二列获取子项目文本,而不是第一列中的项目文本.谢谢.foreach (ListViewItem itemRow in listView1.Items) { for (int i = 0; i < itemRow.SubItems.Count; i++) {string dueDate = itemRow.SubItems[i].Text;MessageBox.Show(dueDate);} }解决方法:检查此代码:foreach (ListViewItem itemRow in this.loggerlistView.It...

c# – 我可以使用parallel.ForEach来调用不同的函数吗?【代码】

我有一个运行的foreach循环.我正在研究并行功能.是否可以转换以下代码以使用并行编程?int result ; int counter; foreach(DataRow dr in ds.Tables[0].Rows) {switch(dr["Gender"].ToString()) {case "Male":result = functionMale(dr["Gender"].ToString());counter += result;break;case "Female":result = functionFemale(dr["Gender"].ToString());counter += result;break;default:result = functionUnkown(dr["Gender"].ToS...

c# – Task.StartNew Parallel.ForEach没有等待【代码】

我有这个代码:await Task.Factory.StartNew(() => Parallel.ForEach(urls,new ParallelOptions { MaxDegreeOfParallelism = 2 },async url =>{Uri uri = new Uri(url);string filename = System.IO.Path.GetFileName(uri.LocalPath);using (HttpClient client = new HttpClient())using (HttpResponseMessage response = await client.GetAsync(url))using (HttpContent content = response.Content){// ... Read the string.usin...

c# – 我可以在ConcurrentBag上使用正常的foreach吗?【代码】

在我的代码的并行部分中,我将每个线程的结果保存到ConcurrentBag.但是,当这完成后,我需要遍历每个结果并通过我的评估算法运行它们.普通的foreach是否会遍历所有成员,还是需要特殊代码?我还想过使用像队列而不是包的东西,但我不知道哪个最好.行李通常在并行代码的末尾仅包含20个左右的项目. 即,实际上将访问并运行ConcurrentBag的所有成员的foreach?ConcurrentBag futures = new ConcurrentBag(); foreach(move in futures) {// s...

C#Linq查询帮助删除foreach循环创建更清晰的代码【代码】

有没有办法使用linq删除for循环来解决我的问题 我想获得每个学生和该列表中每个主题的主题和总分:IEnumerable<Student> students = new List<Student> {new Student() {Id = 1, Name = "John", Age = 13},new Student() {Id = 2, Name = "Mary", Age = 12},new Student() {Id = 3, Name = "Anne", Age = 14} };我有第二个列表,其中包含所有分数和主题信息:IEnumerable<StudentScore> studentScores = new List<StudentScore> {ne...

c# – 为什么Parallel.ForEach改变了它的线程文化?【代码】

今天我遇到了一个我无法解释的奇怪现象.在gridview中有一个包含多个行的网页,需要将其逐个保存到数据库和XML文件中.我最终使用了Parallel.ForEach,因为行之间没有关系,所以它们可以独立执行.代码基本上是这样的:Parallel.ForEach(gvWithData.Rows.Cast<GridViewRow>(), row =>{if (row.RowType == DataControlRowType.DataRow){// do some logic and stuff...var type = new Object { ... };// save to the databasetype.Save();/...

c# – Foreach – 根据List中项目的类型不同的说明【代码】

我有一个接口类FooBar和两个具体的类,Foo和Bar. 如果我在FooBar中使用,我如何根据我的项目是Foo还是Bar来使用不同的指令集? (例如,因为Foo和Bar没有相同的属性).解决方法:三种选择. 如果可能的话,Foo和Bar应该有一个公共基类FooBarBase – 或者实现一个通用接口,你的FooBar – 它定义了一些虚拟方法,比如DoStuff(). Foo和Bar各自适当地实现DoStuff(). 由于你已经有了一个界面,你基本上就在那里.public interface FooBar {void D...

c# – 在静态方法线程安全中使用foreach而不是HttpContext.Current吗?【代码】

记住这些 –HttpContext.Current –Foreach 我无法绕过这个问题……这个代码在ASP.NET中是“线程安全的”吗?public static bool IsCookieMissing() {foreach (string cookieKey in HttpContext.Current.Request.Cookies.AllKeys){if (cookieKey.EndsWith("cookie_name")){return false;}}return true; }解决方法:Is this code “thread safe” in ASP.NET?这取决于你期望它做什么.它最有可能做你期望做的事情,因此它是“线程安全的...