Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 19083|Răspunde: 0

[Sursă] ThreadStart și ParameterizedThreadStart sunt diferite

[Copiază linkul]
Postat pe 14.11.2016 10:25:44 | | |
ThreadStart:

Delegatul ThreadStart este definit ca void ThreadStart(), ceea ce înseamnă că metoda executată nu poate avea parametri.
ThreadStart threadStart=threadStart(Calculate);
Thread thread=thread nou(threadStart);
fir. Start();
Public void Calculate()
   {
diametru dublu = 0,5;
Console.Write("Aria cercului cu diametrul de {0} este {1}"Diameter,Diameter*Math.PI);
   }
       Aici folosim un delegat care definește un tip ThreadStart, care definește metoda pe care thread-ul trebuie să o execute: Calcule, în care se calculează circumferința unui cerc cu diametrul 0,5, și se rezumă. Aceasta constituie cel mai simplu exemplu de multithreading, care în multe cazuri este suficient




ParameterThreadStart:
ParameterThreadStart este definit ca void ParameterizedThreadStart(object star), iar funcția de pornire a firului definit folosind acest delegat poate accepta un parametru de intrare, de exemplu:



ParameterizedThreadStart threadStart=nou parametrizedThreadStart(Calculate)
Thread thread=thread nou() ;
fir. Start (0.9);
public void Calculate(object arg)
{
double Diameter=double(arg);
Console.Write("Aria cercului cu diametrul de {0} este {1}"Diameter,Diameter*Math.PI);
}

Metoda Calculate are un parametru de tip obiect, deși există un singur parametru, și este tot un tip obiect, și tot trebuie convertit când îl folosești, dar din fericire pot exista parametri, iar combinând mai mulți parametri într-o clasă și apoi transmitând instanța acestei clase ca parametru, poți obține transferul mai multor parametri. De exemplu:





clasa AddParams
{
    public int a, b;

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

Programul clasei
{
    static void Main(string[] args)
    {
      Console.WriteLine("***** Adding with Thread objects *****");
      Console.WriteLine("ID de fir în Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

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

    #region Metoda Adunării
    static void Adaugă (date de obiect)
    {
      if (datele sunt AddParams)
      {
        Console.WriteLine("ID de fir în Main(): {0}",
          Thread.CurrentThread.ManagedThreadId);

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




Precedent:.net/c# Căutați avatarele utilizatorilor, luați avatarele QQ
Următor:.net/c# calculează vârsta mașinii șoferului
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com