Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 19083|Válasz: 0

[Forrás] A ThreadStart és a ParameterizedThreadStart eltérőek

[Linket másol]
Közzétéve 2016. 11. 14. 10:25:44 | | |
ThreadStart:

A ThreadStart delegált void ThreadStart() néven van definiálva, ami azt jelenti, hogy a végrehajtott metódusnak nem lehetnek paraméterei.
ThreadStart threadStart=új ThreadStart(Számítás);
Thread=új Thread(threadStart);
Szál. Start();
public void Calculate()
   {
dupla átmérő=0,5;
Console.Write("A kör területe {0} átmérővel: {1}"Átmérő,átmérő*Math.PI);
   }
       Itt egy delegált használunk, amely egy ThreadStart típust definiál, amely meghatározza azt a módszert, amelyet a szálnak végrehajtania kell: Calculate, amelyben egy 0,5 átmérőjű kör kerületét számítják ki, és kimenetel. Ez a legegyszerűbb példa a multithreadingre, amely sok esetben elegendő




ParameterThreadStart:
A ParameterThreadStart null ParameterizedThreadStart (objektumállapot) formájában definiálható, és a szál indítási függvénye, amelyet ezen a delegált segítségével definiál, elfogadhat egy bemeneti paramétert, például:



ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate)
Thread thread=new Thread() ;
Szál. Start(0,9);
public void Calculate(object arg)
{
dupla átmérő=dupla(arg);
Console.Write("A kör területe {0} átmérővel: {1}"Átmérő,átmérő*Math.PI);
}

A Calculate metódusnak van egy objektumtípus paramétere, bár csak egy paraméter van, és ez is objektumtípus, és használatkor még mindig át kell alakítani, de szerencsére lehetnek paraméterek, és ha több paramétert egy osztályba kombinálsz, majd ennek az osztálynak az példányát paraméterként átadjuk, akkor több paraméterátvitelt lehet elérni. Például:





class AddParams
{
    A közirodalom A, B;

    public AddParams(int numb1, int numb2)
    {
      a = numb1;
      b = numb2;
    }
}
#endregion

Osztályprogram
{
    statikus void Main(string[] args)
    {
      Console.WriteLine("***** Thread objektumokkal való hozzáadás *****");
      Console.WriteLine("A thread in Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

      AddParams ap = új AddParams(10, 10);
      Thread t = új Thread(új ParameterizedThreadStart(Add));
      t.Start(ap);
      Console.ReadLine();
    }

    #region Add módszer
    statikus üresség Add(objektum adat)
    {
      ha (az adat AddParams)
      {
        Console.WriteLine("A thread in Main(): {0}",
          Thread.CurrentThread.ManagedThreadId);

        AddParams ap = (AddParams)data;
        Console.WriteLine("{0} + {1} is {2}",
          ap.a, ap.b, ap.a + ap.b);
      }
    }
    #endregion
}
}




Előző:.net/c# Crawl felhasználói avatarokat, szerezz QQ avatarokat
Következő:.net/c# kiszámolja a vezető autójának korát
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com