Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Thread deklarieren » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 2 Beiträge
eulerscheZahl

Wenn die im Thread aufgerufene Funktion Argumente haben soll, musst du diese als Object übergeben. Rückgabewerte kann es logischerweise nicht geben (soll die aufrufende Funktion warten, bis der Thread fertig ist? Dann kann ich es auch gleich im selben Thread machen). Wenn du das Ergebnis brauchst, nimm einen BackgroundWorker, der ruft nach getaner Arbeit RunWorkerCompleted auf.
Und die Funktionsargumente werden auch an anderer Stelle übergeben.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
class Program
{
	public void summe (object obj) //object als einziges Funktionsargument, Rückgabetyp ist void
	{             
		int[] input = (int[])obj; //unboxing
		int a = input [0];
		int b = input [1];
		int sum = Enumerable.Range (a, b - a + 1).Sum ();
		Console.WriteLine (sum);
	}

	static void Main (string[] args)
	{    
		Program addiere = new Program ();
		ParameterizedThreadStart threadStart = new ParameterizedThreadStart (addiere.summe);
		Thread t1 = new Thread (threadStart) { Name = "t1" };
		t1.Start (new int[] { 0, 50 });
	}
}
Haevelin Thread deklarieren

Hallo,
zur Zeit beschäftige ich mich mit Threads in C#. Dazu wollte ich einen Thread deklarieren, was aber nicht funktioniert. Der Code ist (man habe nachsehen für die Formatierung, aber die Codeeinfügung zerstört die ursprüngliche Gliederung):

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text; 
using System.Threading; 
using System.Threading.Tasks;  
namespace A040 
{     
class Program    
 {          
public  int summe(int a, int b)
{             
int sum=0;            
 for (int i = a; i <= b; i++)     
        {                 sum += i;             } 
            return sum;          }         

static void Main(string[] args)        
 {            
 Program addiere= new Program();             
Thread t1 = new Thread(addiere.summe(0, 50)) { Name = "t1" }; ;  
        }     
} 
}


Warum funktioniert die Zeile:

Thread t1 = new Thread(addiere.summe(0, 50)) { Name = "t1" }; ;


nicht?