Avatar billede c-sharp Nybegynder
10. januar 2007 - 10:15 Der er 9 kommentarer og
1 løsning

Retunerer parameter fra tråd når den er færdig

Hvordan kan jeg modtage en streng eller et object fra en tråd når den er færdig med at "arbejde"?
Avatar billede arne_v Ekspert
10. januar 2007 - 13:40 #1
tråden gemmer selv i et field i sit eget objekt

kalderen laver en Join og henter så værdien fra field via en property
Avatar billede c-sharp Nybegynder
10. januar 2007 - 14:19 #2
Hej arne, tak for din kommentar.

Har du evt. et lille eksempel?
Avatar billede c-sharp Nybegynder
10. januar 2007 - 20:35 #3
Er du der endnu arne?
Avatar billede arne_v Ekspert
10. januar 2007 - 20:53 #4
ja

jeg har ikke et godt eksempel

jeg har et eksempel og selvom det er en console app som goer noget helt andet
saa kan du se hvordan man giver noget info med inden start og hvordan du henter
noget info ud efter join

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;
            }
        }
    }
}
Avatar billede c-sharp Nybegynder
11. januar 2007 - 15:17 #5
Som jeg læser din kode så kommer du ikke ud af main før du har modtaget dine værdier fra dine tråde?

Kan man ikke modtage noget via en event når tråden er færdig?
Avatar billede c-sharp Nybegynder
11. januar 2007 - 20:37 #6
Er du der endnu :-)?
Avatar billede arne_v Ekspert
11. januar 2007 - 22:01 #7
det er korrekt

det vil jeg tro, men det vil vaere noedt til at undersoege naermere
Avatar billede arne_v Ekspert
14. januar 2007 - 00:12 #8
det er vist ikke helt simpelt

men Windows Forms har en Invoke metode til det, så det kan lade sig gøre

jeg tror at du i.s.f. skal overveje alternativer - altså gøre noget og først kalde
Join når du absolut skal bruge resulatet
Avatar billede c-sharp Nybegynder
17. januar 2007 - 09:27 #9
Jeg takker for hjælpen her! arne smid et svar så er der point.
Avatar billede arne_v Ekspert
17. januar 2007 - 13:08 #10
ok
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