J'apprécie votre aide à l'avance. Je suis relativement novice en programmation, alors allez-y doucement. À l'heure actuelle, j'ai une boucle qui prend beaucoup de temps et que j'ai vraiment besoin de lancer en dehors du thread de l'interface utilisateur, car Update() met à jour une barre de progression, ce qui n'est pas le cas. J'ai regardé quelques tutoriels de threads courts, et les mises à jour ne sont jamais restituées tant que la grosse boucle n'est pas terminée.Mettre une section de code sur un fil différent?
private void Button_Convert_Click(object sender, RoutedEventArgs e)
{
MachineAngleCalculations.Instance.Arm1Length_Arbitrary = 12;
MachineAngleCalculations.Instance.Arm2Length_Arbitrary = 11;
int resolution = 100000; //points per shape
double xstep, ystep, x, y;
int totalpoints = resolution * ShapeList.Count;
int calculatedpoints = 0;
ProgStat.Update(calculatedpoints, totalpoints, "Calculated", "individual instructions.");
InstructionList.Clear();
foreach (MachineLine item in ShapeList)
{
xstep = (item.End.X - item.Start.X)/(resolution - 1);
ystep = (item.End.Y - item.Start.Y)/(resolution - 1);
for (int i = 0; i < resolution; i++)
{
x = item.Start.X + xstep * i;
y = item.Start.Y + ystep * i;
InstructionList.Add(MachineAngleCalculations.Instance.XYtoMachineInstrution(x, y, 1));
calculatedpoints += 1;
ProgStat.Update(calculatedpoints, totalpoints, "Calculated", "individual instructions.");
}
}
}
Alors, quelle est la façon la plus simple d'exécuter la boucle foreach
sur un thread différent? Y at-il un moyen de le faire sans le mettre dans une fonction différente?
http://stackoverflow.com/questions/670510/threading-in-net –