See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 19083|Vastuse: 0

[Allikas] ThreadStart ja ParameterizedThreadStart on erinevad

[Kopeeri link]
Postitatud 14.11.2016 10:25:44 | | |
ThreadStart:

ThreadStarti delegaat on defineeritud kui void ThreadStart(), mis tähendab, et käivitatud meetodil ei saa olla parameetreid.
ThreadStart threadStart=new ThreadStart(Calculate);
Thread = uus Thread (threadStart);
niit. Start();
public void Calculate()
   {
kahekordne diameeter=0,5;
Console.Write("Ringi pindala läbimõõduga {0} on {1}"Diameeter,Diameet*Math.PI);
   }
       Siin kasutame delegaati, mis määratleb ThreadStart tüübi, mis määrab meetodi, mida lõim peab täitma: Calculate, kus arvutatakse 0,5 läbimõõduga ringi ümbermõõt ja väljund. See on lihtsaim näide mitmelõimelisest kasutamisest, mis paljudel juhtudel on piisav




ParameterThreadStart:
ParameterThreadStart on defineeritud kui void ParameterizedThreadStart (objekti seisund) ning selle delegaadi abil defineeritud lõime käivitusfunktsioon võib vastu võtta sisendparameetrit, näiteks:



ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate)
Thread thread=new Thread() ;
niit. Start(0,9);
public void Calculate(object arg)
{
kahekordne diameeter = kahekordne (arg);
Console.Write("Ringi pindala läbimõõduga {0} on {1}"Diameeter,Diameet*Math.PI);
}

Calculate meetodil on parameeter tüüpi objekt, kuigi parameeter on ainult üks, ja see on samuti objektitüüp ning seda tuleb ikkagi teisendada, kuid õnneks on olemas parameetrid, ning kombineerides mitu parameetrit klassiks ja seejärel selle klassi eksemplari parameetrina edasi andes, saab saavutada mitme parameetri ülekande. Nagu mida:





class AddParams
{
    avalik intellekt A, B;

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

Klassiprogramm
{
    staatiline tühjus Main(string[] args)
    {
      Console.WriteLine("***** Lisamine lõimeobjektidega *****");
      Console.WriteLine("Lõime ID Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

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

    #region Lisa meetod
    staatiline tühjus Lisa(objektiandmed)
    {
      if (andmed on AddParams)
      {
        Console.WriteLine("Lõime ID Main(): {0}",
          Thread.CurrentThread.ManagedThreadId);

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




Eelmine:.net/c# Rooma kasutaja avatare, haara QQ avatare
Järgmine:.net/c# arvutab juhi auto vanuse
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com