foreach (string item in items) { Thread thread = new Thread(Work); thread.Name = item; thread.Start(); }
Console.ReadLine(); }
static void Work() { Console.WriteLine(Thread.CurrentThread.Name + " køre nu..."); Console.WriteLine(Thread.CurrentThread.Name + " har antal : " + GetAntal());
Thread[] threads = new Thread[10]; for (int x = 0; x < 10; ++x) { threads[x] = new Thread(MultiWork); threads[x].Name = Thread.CurrentThread.Name; threads[x].Start(); }
// Wait for them to complete foreach (Thread thread in threads) { thread.Join(); }
Console.WriteLine(Thread.CurrentThread.Name + " har antal : " + GetAntal()); Console.WriteLine(Thread.CurrentThread.Name + " slutter nu..."); }
Hvis den her bliver kørt så er resultat : A køre nu... A har antal : 0 A har antal : 10 A Slutter nu...
Hvis jeg så tilføjer : items.Add("B"); i toppen af Main. Så er resultat: A køre nu... A har antal : 0 B køre nu... B har antal : 0 B har antal : 19 B Slutter nu... A har antal : 20 A Slutter nu...
Nogen som ved hvordan jeg holder A og B fra hinanden ? Så dataen ikke køre sammen ??
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
måske du skulle lade være med at bruge den samme globale variabel til dit antal... men lave en variabel i tråden, og så give den med til dine funktions kald...
Thread[] threads = new Thread[10]; for (int x = 0; x < 10; ++x) { threads[x] = new Thread(MultiWork); threads[x].Name = Thread.CurrentThread.Name; threads[x].Start(); }
// Wait for them to complete foreach (Thread thread in threads) { thread.Join(); }
Lav en klasse med data og work metode, lave en instans af den klasse per traad der skal koere, gem input data i objektet, start traad, lad traad gemme output data i objektet, vent paa traad er faerdig, hent output data fra objektet.
Jeg lavede engang foelgende til et andet spoergsmaal:
using System; using System.Diagnostics; using System.IO; using System.Threading;
namespace E { public class MainClass { private const int NHOST = 256; public static void Main(string[] args) { Pinger[] p = new Pinger[NHOST]; Thread[] t = new Thread[NHOST]; for(int i = 0; i < NHOST; i++) { p[i] = new Pinger(i); t[i] = new Thread(new ThreadStart(p[i].Run)); t[i].Start(); } for(int i = 0; i < NHOST; i++) { t[i].Join(); Console.WriteLine(p[i].Res); } } } public class Pinger { private int no; private string res; public Pinger(int no) { this.no = no; res = ""; } public void Run() { ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = "ping"; psi.Arguments = "192.168.0." + no; psi.CreateNoWindow = true; psi.UseShellExecute = false; psi.RedirectStandardOutput = true; Process p = Process.Start(psi); StreamReader sr = p.StandardOutput; string line; while((line = sr.ReadLine()) != null) { res += line; } sr.Close(); p.Close(); } public string Res { get { return res; } } } }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.