Avatar billede droa Novice
28. juni 2009 - 14:07 Der er 6 kommentarer og
1 løsning

vis man kalder en funktion ind i en tråd?

Hej eksperter, mit spørgsmål er ret simpelt.

vis jeg nu har en klasse med 2 funktioner, og 1 variabel.

variabel1
funktion1
funktion2

scenarie1
vis jeg nu gerne vil bruge funktion1 som en selvstændig Thread, og derefter bruger funktion2, inde i in funktion1. samt funktion2, opdatere variabel1.

scenarie2
vis jeg nu gerne vil bruge funktion1 som en selvstændig Thread, som skal opdatere variabel1, og funktion2 kan bruges til og hente variabel1, til anden brug.


resultat:
vil funktion2 og variabel1, blive køre inde i funktion1's Tråd, eller i ens main tråd? mange tak for hjælpen, på forhånd :)
Avatar billede droa Novice
28. juni 2009 - 14:09 #1
jeg ved godt fuktioner hedder metoder, men jeg er vandt til det hedder funktioner, undskyld for forvirringen!
Avatar billede CCodam Nybegynder
28. juni 2009 - 16:13 #2
Jeg er rent faktisk ikke sikker, men du kan jo selv prøve at teste det :)

I funktion2 lav en System.Threading.Thread.Sleep(10000), og kør så programmet, hvis programmet IKKE hænger når du fyre funktion1 af, så skyldes det at funktion2 blir afviklet i den seperate tråd :)
Avatar billede droa Novice
28. juni 2009 - 17:37 #3
mange tak for eksemplet, og det virkede faktisk, ser ud som om Tråden henter dem ind i sin egen tråd.

form

    public partial class Form1 : Form
    {
        Test h = new Test();
        public Form1()
        {
            InitializeComponent();
            Thread t = new Thread(new ThreadStart(h.Run));
            t.Start();
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
                progressBar1.Value = h.Get();
        }

    }


class

    class Test
    {
        int test = 0;

        public void Run()
        {
            while (test < 100)
            {
                test++;
                Wait(100000);
            }
        }

        void Wait(int i)
        {
            System.Threading.Thread.Sleep(i);
        }

        public int Get()
        {
            return test;
        }
    }
Avatar billede droa Novice
28. juni 2009 - 17:53 #4
også til de sarte.


    public partial class Form1 : Form
    {
        Test h = new Test();
        public Form1()
        {
            InitializeComponent();
            h.StartThread();
            timer1.Interval = 1;
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            progressBar1.Value = h.GetProgress();
            label1.Text = "Runs: " + h.GetRuns();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            h.StopThread();
        }

    }



  class Test
    {
        int test = 0;
        int runs = 10;
        Thread t;
        public void StartThread()
        {
            t = new Thread(new ThreadStart(Run));
            t.Start();
        }

        public void StopThread()
        {
            t.Abort();
        }
        public void Run()
        {
            while (runs > 0)
            {
                while (test < 100)
                {
                    test++;
                    Wait(10);
                }
                runs--;
                test = 0;
            }
        }

        void Wait(int i)
        {
            Thread.Sleep(i);
        }

        public int GetProgress()
        {
            return test;
        }
        public int GetRuns()
        {
            return runs;
        }
    }
Avatar billede CCodam Nybegynder
29. juni 2009 - 09:01 #5
Glad for at jeg kunne hjælpe :)
Avatar billede tjacob Juniormester
29. juni 2009 - 11:15 #6
droa>> Undskyld jeg blander mig i dit spørgsmål, men hvordan har du lavet kodeboksene i dine kommentarer?
Avatar billede droa Novice
29. juni 2009 - 15:36 #7
de er BB code tag. du skriver [ Div ] [/ Div ] uden whitespace
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