Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 19083|Antwoord: 0

[Bron] ThreadStart en ParameterizedThreadStart zijn verschillend

[Link kopiëren]
Geplaatst op 14-11-2016 10:25:44 | | |
ThreadStart:

De ThreadStart-delegate wordt gedefinieerd als void ThreadStart(), wat betekent dat de uitgevoerde methode geen parameters kan hebben.
ThreadStart threadStart=nieuwe ThreadStart(berekenen);
Thread thread=nieuwe Thread(threadStart);
draad. Start();
publieke leegte Bereken()
   {
dubbele diameter=0,5;
Console.Write("Het oppervlak van de cirkel met een diameter van {0} is {1}"Diameter,Diameter*Math.PI);
   }
       Hier gebruiken we een delegate die een ThreadStart-type definieert, die de methode definieert die de thread moet uitvoeren: Calculate, waarbij de omtrek van een cirkel met een diameter van 0,5 wordt berekend, en outputt. Dit vormt het eenvoudigste voorbeeld van multithreading, wat in veel gevallen voldoende is




ParameterThreadStart:
ParameterThreadStart wordt gedefinieerd als void ParameterizedThreadStart (objectstatus), en de opstartfunctie van de thread die met deze delegate is gedefinieerd, kan een invoerparameter accepteren, bijvoorbeeld:



ParameterizedThreadStart threadStart=nieuwe ParameterizedThreadStart(Calculate)
Thread thread=nieuwe Thread() ;
draad. Start (0,9);
publieke leegte Bereken(object arg)
{
dubbele diameter=dubbel(arg);
Console.Write("Het oppervlak van de cirkel met een diameter van {0} is {1}"Diameter,Diameter*Math.PI);
}

De Calcalc-methode heeft een parameter van type object, hoewel er maar één parameter is, en het is ook een objecttype, en die moet nog steeds worden omgezet bij gebruik, maar gelukkig kunnen er parameters zijn, en door meerdere parameters te combineren tot een klasse en vervolgens de instantie van deze klasse als parameter door te geven, kun je meerdere parameteroverdrachten bereiken. Zoals wat:





klasse AddParams
{
    Publieke Int A, B;

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

Klasprogramma
{
    statische void Main(string[] args)
    {
      Console.WriteLine("***** Toevoegen met Thread-objecten *****");
      Console.WriteLine("ID van thread in Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

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

    #region Toevoegmethode
    statische void Add(objectgegevens)
    {
      als (data is AddParams)
      {
        Console.WriteLine("ID van 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
}
}




Vorig:.net/c# Crawl gebruikersavatars, haal QQ-avatars
Volgend:.net/c# berekent de leeftijd van de auto van de bestuurder
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com