Parallel processing 并行化问题

Parallel processing 并行化问题,parallel-processing,Parallel Processing,我正在创建一个程序,该程序在循环中连续使用节点,循环有一个端点,不像我现在的示例。我展示的代码简化了我正在做的事情,但有效地展示了我的问题 namespace WindowsFormsApplication1 { public class NodoResolver { public List<NodoResolver> NodosSuperiores = null; public NodoResolver NodoIzquierda

我正在创建一个程序,该程序在循环中连续使用节点,循环有一个端点,不像我现在的示例。我展示的代码简化了我正在做的事情,但有效地展示了我的问题


namespace WindowsFormsApplication1
{
    public class NodoResolver
    {
        public List<NodoResolver> NodosSuperiores = null;
        public NodoResolver NodoIzquierda = null;

        public List<short> ListaID_FECHA_Ganadas = null;
        public List<short> ListaNuevasID_FECHA_Ganadas = null;
        public List<short> ListaID_FECHA_Perdidas = null;
        public List<short> ListaNuevasID_FECHA_Perdidas = null;

        public int kIndiceInicial = 0;
        public int kIndiceFinal = 0; //Es el que se calcula en ese momento

        public int kShiftInicial = 0;
        public int kShiftFinal = 0; //Es el que se calcula en ese momento

        public NodoResolver()
        {
        }

        public NodoResolver(NodoResolver nodo, bool Reiniciar)
        {
            if (!Reiniciar)
            {
                NodosSuperiores = nodo.NodosSuperiores;
                NodoIzquierda = nodo;
                ListaNuevasID_FECHA_Ganadas = nodo.ListaNuevasID_FECHA_Ganadas;
                ListaNuevasID_FECHA_Perdidas = nodo.ListaNuevasID_FECHA_Perdidas;
            }

            kIndiceInicial = nodo.kIndiceInicial;
            kIndiceFinal = nodo.kIndiceFinal;

            kShiftInicial = nodo.kShiftInicial;
            kShiftFinal = nodo.kShiftFinal;
        }
    }
}

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            var options = new ParallelOptions()
            {
                MaxDegreeOfParallelism = 24
            };

            Parallel.For(0, 24, options, Hola =>
            {
                Correr();
            });
        }

        private void Correr()
        {
            List<NodoResolver> ListaNodos = new List<NodoResolver>();
            ListaNodos.Add(new NodoResolver());
            while (ListaNodos.Count > 0)
            {
                ListaNodos.RemoveAt(0);
                ListaNodos.Add(new NodoResolver());
            }
        }
    }
}

命名空间Windows窗体应用程序1
{
公共类节点求解器
{
公共列表nodosuperiors=null;
公共NodoResolver NodoIzquierda=null;
公共列表ListaID_FECHA_Ganadas=null;
公共列表ListaNuevasID\u FECHA\u Ganadas=null;
公共列表列表ID_FECHA_Perdidas=null;
公共列表ListaNuevasID_FECHA_Perdidas=null;
public int kindiceinical=0;
public int kIndiceFinal=0;//计算时间
公共int kshiftinical=0;
public int kShiftFinal=0;//计算时间
公共节点求解器()
{
}
公共NodoResolver(NodoResolver nodo,bool Reiniciar)
{
如果(!Reiniciar)
{
nodossuperiors=nodo.nodossuperiors;
NodoIzquierda=nodo;
ListaNuevasID_FECHA_Ganadas=nodo.ListaNuevasID_FECHA_Ganadas;
ListaNuevasID_FECHA_Perdidas=nodo.ListaNuevasID_FECHA_Perdidas;
}
kIndiceInicial=nodo.kIndiceInicial;
kIndiceFinal=nodo.kIndiceFinal;
kshiftinical=nodo.kshiftinical;
kshift final=nodo.kshift final;
}
}
}
使用制度;
使用System.Collections.Generic;
使用系统线程;
使用System.Threading.Tasks;
使用System.Windows.Forms;
命名空间Windows窗体应用程序1
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
var options=new ParallelOptions()
{
MaxDegreeOfParallelism=24
};
对于(0,24,选项,Hola=>
{
corr();
});
}
私有无效corler()
{
List ListaNodos=新列表();
添加(新的NodoResolver());
而(listandos.Count>0)
{
ListaNodos.RemoveAt(0);
添加(新的NodoResolver());
}
}
}
}
当我看到CPU利用率非常低时,问题就出现了。如何使用100%的CPU使其工作?