Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 19083|Risposta: 0

[Fonte] ThreadStart e ParameterizedThreadStart sono diversi

[Copiato link]
Pubblicato su 14/11/2016 10:25:44 | | |
ThreadStart:

Il delegato ThreadStart è definito come void ThreadStart(), il che significa che il metodo eseguito non può avere parametri.
ThreadStart threadStart=nuovo ThreadStart(Calcola);
Thread thread=nuovo thread(threadStart);
filo. Start();
Vuoto pubblico Calcola()
   {
doppio diametro=0,5;
Console.Write("L'area del cerchio con diametro di {0} è {1}"Diameter,Diameter*Math.PI);
   }
       Qui usiamo un delegato che definisce un tipo ThreadStart, che definisce il metodo che il thread deve eseguire: Calcolare, in cui si calcola la circonferenza di un cerchio con diametro 0,5, e risulta. Questo costituisce l'esempio più semplice di multithreading, che in molti casi è sufficiente




ParameterThreadStart:
ParameterThreadStart è definito come void ParameterizedThreadStart(stato dell'oggetto), e la funzione di avvio del thread definita usando questo delegato può accettare un parametro di input, ad esempio:



ParameterizedThreadStart threadStart=nuovo parametrizedThreadStart(Calculate)
Thread thread=nuovo thread() ;
filo. Partenza (0,9);
Public void Calcola(object arg)
{
doppio Diametro=doppio(arg);
Console.Write("L'area del cerchio con diametro di {0} è {1}"Diameter,Diameter*Math.PI);
}

Il metodo Calculate ha un parametro di tipo oggetto, anche se c'è un solo parametro, ed è anch'esso un tipo oggetto, e deve comunque essere convertito quando lo utilizzi, ma fortunatamente possono esserci parametri e, combinando più parametri in una classe e passando l'istanza di questa classe come parametro, si può ottenere un trasferimento di più parametri. Come cosa:





classe AddParams
{
    pubblico int a, b;

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

Programma di classe
{
    vuoto statico Main(string[] args)
    {
      Console.WriteLine("***** Aggiungendo con oggetti Thread *****");
      Console.WriteLine("ID del thread in Main(): {0}",
        Thread.ThreadCurrent.ThreadIdGestito);

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

    #region Metodo di addizione
    static void Aggiunge(dati oggetto)
    {
      if (i dati sono AddParams)
      {
        Console.WriteLine("ID del thread in Main(): {0}",
          Thread.ThreadCurrent.ThreadIdGestito);

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




Precedente:.net/c# Scansiona gli avatar degli utenti, prendi gli avatar di QQ
Prossimo:.net/c# calcola l'età dell'auto del conducente
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com