Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 19083|Vastaus: 0

[Lähde] ThreadStart ja ParameterizedThreadStart ovat eri asioita

[Kopioi linkki]
Julkaistu 14.11.2016 10.25.44 | | |
ThreadStart:

ThreadStart-delegaatti määritellään void ThreadStart(), mikä tarkoittaa, että suoritettavalla metodilla ei voi olla parametreja.
ThreadStart threadStart=new ThreadStart(Laske);
Thread thread=new Thread(threadStart);
lanka. Start();
public void Calculate()
   {
kaksoishalkaisija=0,5;
Console.Write("Ympyrän pinta-ala, jonka halkaisija on {0}, on {1}"Halkaisija,Halkaisija*Math.PI);
   }
       Tässä käytämme delegaattia, joka määrittelee ThreadStart-tyypin, joka määrittelee menetelmän, jonka säikeen täytyy suorittaa: Calculate, jossa lasketaan ympyrän ympärysmitta, jonka halkaisija on 0,5, ja tulokset. Tämä on yksinkertaisin esimerkki monisäikeisyydestä, joka monissa tapauksissa riittää




ParameterThreadStart:
ParameterThreadStart määritellään tyhjäksi ParameterizedThreadStart (objektitila), ja tämän delegaatin avulla määritellyn säikeen käynnistysfunktio voi hyväksyä syöteparametrin, esimerkiksi:



ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate)
Thread thread=new Thread() ;
lanka. Start(0,9);
public void Laske (objekti arg)
{
kaksoishalkaisija=kaksois(arg);
Console.Write("Ympyrän pinta-ala, jonka halkaisija on {0}, on {1}"Halkaisija,Halkaisija*Math.PI);
}

Calcole-menetelmällä on parametri tyyppiobjekti, vaikka parametri on vain yksi, ja sekin on objektityyppi, ja se täytyy silti muuntaa sitä käytettäessä, mutta onneksi parametreja voi olla, ja yhdistämällä useita parametreja yhdeksi luokaksi ja siirtämällä tämän luokan instanssi parametrina, voidaan saavuttaa useiden parametrien siirto. Kuten mitä:





class AddParams
{
    julkinen int a, b;

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

luokkaohjelma
{
    staattinen void Pää(merkkijono[] args)
    {
      Console.WriteLine("***** Lisääminen säikeobjektien kanssa *****");
      Console.WriteLine("Main() säikeen tunnus: {0}",
        Thread.CurrentThread.ManagedThreadId);

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

    #region Lisää-menetelmä
    staattinen void Add(objektidata)
    {
      if (data on AddParams)
      {
        Console.WriteLine("Main() säikeen tunnus: {0}",
          Thread.CurrentThread.ManagedThreadId);

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




Edellinen:.net/c# Selaa käyttäjäavatareja, ota QQ-avatarit
Seuraava:.net/c# laskee kuljettajan auton iän
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com