C#-ban hogyan tudok egy új szálat indítani, ha a függvényem paramétert vár?
pl:
Thread t = new Thread(fuggveny);
t.Start();
és a fuggvény:
static bool fuggveny(string s)
{
if(s ==valami)
{
return true;
}
else
{
return false;
}
}
Azonban ezt nem engedi a fejlesztőkörnyezet:
string szoveg = "valami";
Thread t = new Thread(fuggveny(szoveg));
t.Start();
Mi a gond? Hogyan tudom ezt megoldani?
Hogy lehet egy külön szálat paraméterekkel indítani?
Miért is akarsz külön szálon feldolgozni? Ezt értelmet-
len külön threadbe kirakni, mert kb 10x annyi ideig
tart, mire megcsinálja, mintha a főszálon futtatnád.
Arról nem is beszélve, hogy a hívó szálnál gondolom
be kell várnod az új threadet az eredménnyel, vagy
csak úgy szabadon útjára indítod? :)
Paraméterekkel nem fogod tudni egyszerűen megoldani,
mert akkor legalább egy constructort kell írnod egy
új thread classhoz. Az pedig nem ennyire egyszerű.
Alap thread max procot fogad el, már hogy melyik procot
futtassa threadben, de annak nem lehet paramétere.
Mielőtt elküldöm a válaszom, kipróbálok valamit, hátha tudok tagolva kódot másolni ide:
class Asd {
public void a() {
return;
}
}
class Program {
static void Main(string[] args) {
Thread.CurrentThread.Name = "MainThread";
Thread t = new Thread(LongRunningProcess) {
Name = "LongThread"
};
Console.WriteLine($"[{Thread.CurrentThread.Name}] Starting {t.Name}");
t.Start(10);
while (t.ThreadState != ThreadState.Stopped) {
//To prevent high CPU usage...
Thread.Sleep(500);
Console.WriteLine($"[{Thread.CurrentThread.Name}] Waiting for {t.Name} to exit...");
}
Console.WriteLine($"[{Thread.CurrentThread.Name}] {t.Name} has exited. Press Enter to close.");
Console.ReadLine();
}
private static void LongRunningProcess(object i) {
#region Error checking
if (!(i is int))
return;
#endregion
for (int Current = 0; Current < (int)i; Current++) {
Console.WriteLine($"[{Thread.CurrentThread.Name}] {nameof(Current)} = {Current}");
Thread.Sleep(1000);
}
}
}
Valahogy nem lepődtem meg, hogy nem sikerült ide kódot másolnom...
Mindenesetre itt van eredetiben:
Köszönöm szépen a válaszokat.
Kedves #7.
Kerlek elmagyaraznad nekem ezt a kodot. Nem ertem..igazabol az object az idegen szamomra itt..
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!