Avatar billede halden Nybegynder
26. oktober 2004 - 12:58 Der er 7 kommentarer og
1 løsning

Class til en tråd

hvordan laver jeg det så en class er en tråd og instantiere, starter og stopper den fra en anden class???
Et lille eksempel ville gøre underværker...
Avatar billede halden Nybegynder
26. oktober 2004 - 12:59 #1
det jeg har problemer med er at definere hvordan en class er skal være en tråd...
Avatar billede arne_v Ekspert
26. oktober 2004 - 13:11 #2
I C# vil du normalt starte en tråd med en metode.

Super simpelt eksempel:

using System;
using System.Threading;

class MainClass
{
    public static void Main(string[] args)
    {
        Thread[] t = new Thread[10];
        for(int i = 0; i < t.Length; i++) {
            t[i] = new Thread(new ThreadStart(DoSomething));
        }
        for(int i = 0; i < t.Length; i++) {
            t[i].Start();
        }
        for(int i = 0; i < t.Length; i++) {
            t[i].Join();
        }
    }
    public static void DoSomething()
    {
        Console.WriteLine("start");
        Thread.Sleep(5000);
        Console.WriteLine("end");
    }
}
Avatar billede arne_v Ekspert
26. oktober 2004 - 13:16 #3
Et lidt mere komplekst eksempel med en klasse og en Run metode (Java style):

using System;
using System.Threading;

public class T
{
    private static Random rng = new Random();
    private int n;
    public T()
    {
        n = 0;
    }
    public void Run()
    {
        while(true)
        {
            Thread.Sleep(rng.Next(100));
            n++;
        }
    }
    public int N
    {
        get {
            return n;
        }
    }
}

class MainClass
{
    public static void Main(string[] args)
    {
        T[] t = new T[4];
        for(int i = 0; i < t.Length; i++)
        {
            t[i] = new T();
           
        }
        for(int i = 0; i < t.Length; i++)
        {
            (new Thread(new ThreadStart(t[i].Run))).Start();
        }
        while(true)
        {
            for(int i = 0; i < t.Length; i++)
            {
                Console.Write(" " + t[i].N);
            }
            Console.WriteLine();
            Thread.Sleep(1000);
        }
    }
}
Avatar billede halden Nybegynder
26. oktober 2004 - 13:27 #4
tak arne - lige det jeg ville have. Svar for point
Avatar billede arne_v Ekspert
26. oktober 2004 - 13:43 #5
svar
Avatar billede Syska Mester
26. oktober 2004 - 16:40 #6
Nu sidder jeg lige og kigger med.... :-)

Kan man ikke sende parametre med når man starter en Thread?
Avatar billede arne_v Ekspert
26. oktober 2004 - 17:01 #7
Så vidt jeg ved er man nødt til at sende parametrhe med over i constructor på sit
objekt, lade constructor gemme dem i instans variable og så kan metoden uden
parametre bruge dem.
Avatar billede Syska Mester
27. oktober 2004 - 08:40 #8
okay, takker
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Netcompany A/S

Network Engineer

Netcompany A/S

Test Consultant

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Teamleder til AL Sydbanks GDPR & Tech Regulation i Aabenraa