Kezdőoldal » Számítástechnika » Programozás » C#-ban hogyan tudok egy új...

Blibd kérdése:

C#-ban hogyan tudok egy új szálat indítani, ha a függvényem paramétert vár?

Figyelt kérdés

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?



2017. szept. 4. 09:41
1 2 3
 1/28 sharkxxx ***** válasza:

Itt egy példa:

[link]

2017. szept. 4. 09:59
Hasznos számodra ez a válasz?
 2/28 anonim ***** válasza:
34%

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.

2017. szept. 4. 10:54
Hasznos számodra ez a válasz?
 3/28 anonim ***** válasza:
#2: Arra nem gondoltál, hogy a "fuggveny"-en belül nem csak egy egyenlőség vizsgálat van, hanem az csak egy példa? Nyilván a tényleges kód sokáig fut... A második bekezdésed pedig hülyeség, nem kell ide sem új osztály, sem konstruktor. Az #1-es linkjén ott van hogy lehet paramétert átadni. Ez egy object lesz, de ha tudod, hogy string, csak át kell castolni.
2017. szept. 4. 14:10
Hasznos számodra ez a válasz?
 4/28 anonim ***** válasza:
ParameterizedThreadStart
2017. szept. 4. 16:39
Hasznos számodra ez a válasz?
 5/28 anonim ***** válasza:

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;

  }

}

2017. szept. 4. 17:58
Hasznos számodra ez a válasz?
 6/28 anonim ***** válasza:

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);

    }

  }

}

2017. szept. 4. 18:03
Hasznos számodra ez a válasz?
 7/28 anonim ***** válasza:

Valahogy nem lepődtem meg, hogy nem sikerült ide kódot másolnom...


Mindenesetre itt van eredetiben:

[link]

2017. szept. 4. 18:05
Hasznos számodra ez a válasz?
 8/28 A kérdező kommentje:

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..

2017. szept. 4. 19:52
 9/28 anonim ***** válasza:
C#-ban az elég merész.
2017. szept. 4. 20:14
Hasznos számodra ez a válasz?
 10/28 anonim ***** válasza:
Az a lényeg, hogy C# nyelvben minden osztály az Object osztályból származik. Nézz utána, hogy mi az az öröklődés és meg fogod érteni.
2017. szept. 4. 20:39
Hasznos számodra ez a válasz?
1 2 3

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!