Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 19083|Odgovoriti: 0

[Vir] ThreadStart in ParameterizedThreadStart sta različna

[Kopiraj povezavo]
Objavljeno na 14. 11. 2016 10:25:44 | | |
ThreadStart:

Delegat ThreadStart je definiran kot void ThreadStart(), kar pomeni, da izvedena metoda ne more imeti parametrov.
ThreadStart threadStart=new ThreadStart(Calculate);
Thread thread=nova Thread(threadStart);
nit. Start();
public void Calculate()
   {
dvojni premer=0,5;
Console.write ("Površina kroga s premerom {0} je {1}"Premer, premer*Math.PI);
   }
       Tukaj uporabimo delegata, ki definira tip ThreadStart, ki določa metodo, ki jo nit potrebuje za izvajanje: Calculate, pri čemer izračunamo obseg kroga s premerom 0,5, in izhod. To predstavlja najpreprostejši primer večnitnosti, ki je v mnogih primerih dovolj




Parameter ThreadStart:
ParameterThreadStart je definiran kot void ParameterizedThreadStart(object state), zagonska funkcija niti, definirane s tem delegatom, pa lahko sprejme vhodni parameter, na primer:



ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate)
Thread thread=new Thread() ;
nit. Začetek (0,9);
javna praznina Calculate(object arg)
{
dvojni premer = dvojni (arg);
Console.write ("Površina kroga s premerom {0} je {1}"Premer, premer*Math.PI);
}

Metoda Calculate ima parameter tipa objekt, čeprav je le en parameter, in je tudi tip objekta, ki ga je treba še vedno pretvoriti ob uporabi, vendar na srečo obstajajo parametri, in z združitvijo več parametrov v razred ter nato posredovanjem instance tega razreda kot parametra lahko dosežete prenos več parametrov. Na primer kaj:





razred AddParams
{
    javni int a, b;

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

Razredni program
{
    static void Main (string[] args)
    {
      Console.WriteLine("***** Dodajanje z objekti Thread *****");
      Console.WriteLine("ID niti v Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

      AddParams ap = novi AddParams(10, 10);
      Thread t = nova nit(new ParameterizedThreadStart(Add));
      t.Start(ap);
      Console.ReadLine();
    }

    #region Metoda dodajanja
    statična praznina Dodaj (podatki objekta)
    {
      če (podatki so AddParams)
      {
        Console.WriteLine("ID niti v Main(): {0}",
          Thread.CurrentThread.ManagedThreadId);

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




Prejšnji:.net/c# Prebrskajte uporabniške avatarje, pridobite QQ avatarje
Naslednji:.net/c# izračuna starost voznikovega avtomobila
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com