Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 19083|Svare: 0

[Kilde] ThreadStart og ParameterizedThreadStart er forskjellige

[Kopier lenke]
Publisert på 14.11.2016 10:25:44 | | |
ThreadStart:

ThreadStart-delegaten defineres som void ThreadStart(), noe som betyr at metoden som kjøres ikke kan ha parametere.
ThreadStart threadStart=ny ThreadStart(Beregn);
Thread thread=ny tråd(threadStart);
tråd. Start();
offentlig tomrom Calculate()
   {
dobbel diameter=0,5;
Console.Write("Arealet av sirkelen med en diameter på {0} er {1}"Diameter,Diameter*Math.PI);
   }
       Her bruker vi en delegat som definerer en ThreadStart-type, som definerer metoden tråden må utføre: Calculate, hvor omkretsen til en sirkel med diameter på 0,5 beregnes, og gir resultater. Dette utgjør det enkleste eksempelet på multitråding, som i mange tilfeller er tilstrekkelig




ParameterThreadStart:
ParameterThreadStart er definert som void ParameterizedThreadStart (objekttilstand), og oppstartsfunksjonen til tråden definert med denne delegaten kan akseptere en inputparameter, for eksempel:



ParameterizedThreadStart threadStart=ny ParameterizedThreadStart(Calculate)
Thread thread=ny Thread() ;
tråd. Start (0,9);
public void Calculate(object arg)
{
dobbel diameter=dobbel(arg);
Console.Write("Arealet av sirkelen med en diameter på {0} er {1}"Diameter,Diameter*Math.PI);
}

Beregn-metoden har en parameter av typen objekt, selv om det bare finnes én parameter, og den er også en objekttype, og den må fortsatt konverteres når man bruker den, men heldigvis kan det finnes parametere, og ved å kombinere flere parametere til en klasse, og deretter sende instansen av denne klassen som parameter, kan du oppnå overføring av flere parametere. Som hva:





klasse AddParams
{
    offentlig int a, b;

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

Klasseprogram
{
    statisk void Main(string[] args)
    {
      Console.WriteLine("***** Legge til med trådobjekter *****");
      Console.WriteLine("ID for tråden i Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

      AddParams ap = nye AddParams(10, 10);
      Tråd t = ny tråd(ny ParameterisertTrådStart(Add));
      t.Start(ap);
      Console.ReadLine();
    }

    #region Add-metoden
    statisk void Add(objektdata)
    {
      hvis (data er AddParams)
      {
        Console.WriteLine("ID for tråden i Main(): {0}",
          Thread.CurrentThread.ManagedThreadId);

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




Foregående:.net/c# Crawl brukeravatarer, hent QQ-avatarer
Neste:.net/c# beregner alderen på sjåførens bil
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com