Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 19083|Svar: 0

[Källa] ThreadStart och ParameterizedThreadStart är olika

[Kopiera länk]
Publicerad på 2016-11-14 10:25:44 | | |
ThreadStart:

ThreadStart-delegaten definieras som void ThreadStart(), vilket innebär att metoden som körs inte kan ha parametrar.
ThreadStart threadStart=ny ThreadStart(Beräkna);
Thread thread=ny Thread(threadStart);
tråd. Start();
public void Calculate()
   {
dubbel diameter=0,5;
Console.Write("Arean av en cirkel med en diameter på {0} är {1}"Diameter, Diameter*Math.PI);
   }
       Här använder vi en delegat som definierar en ThreadStart-typ, som definierar metoden som tråden behöver exekvera: Calculate, där omkretsen av en cirkel med diameter 0,5 beräknas, och ger utdata. Detta utgör det enklaste exemplet på multitrådning, vilket i många fall är tillräckligt




ParameterThreadStart:
ParameterThreadStart definieras som void ParameterizedThreadStart (objekttillstånd), och startfunktionen för tråden som definieras med denna delegat kan acceptera en indataparameter, till exempel:



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

Beräknemetoden har en parameter av typen objekt, även om det bara finns en parameter, och det är också en objekttyp, och den måste fortfarande konverteras när den används, men lyckligtvis kan det finnas parametrar, och genom att kombinera flera parametrar till en klass och sedan skicka instansen av denna klass som en parameter kan du uppnå överföring av flera parametrar. Som vad:





klass AddParams
{
    Offentlig int A, B;

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

Klassprogram
{
    statiskt tomrum Main(string[] args)
    {
      Console.WriteLine("***** Adding with Thread-objekt *****");
      Console.WriteLine("ID för tråden i Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

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

    #region Add-metoden
    statisk void Add (objektdata)
    {
      om (data är AddParams)
      {
        Console.WriteLine("ID för tråden i Main(): {0}",
          Thread.CurrentThread.ManagedThreadId);

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




Föregående:.net/c# Crawla användaravatarer, hämta QQ-avatarer
Nästa:.net/c# beräknar åldern på förarens bil
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com