Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 19716|Svar: 0

[Kilde] ThreadStart og ParameterizedThreadStart er forskellige

[Kopier link]
Opslået på 14/11/2016 10.25.44 | | |
ThreadStart:

ThreadStart-delegaten defineres som void ThreadStart(), hvilket betyder, at den udførte metode ikke kan have parametre.
ThreadStart threadStart=ny ThreadStart(Beregn);
Thread thread=ny tråd(threadStart);
tråd. Start();
offentlig tomrum Beregn()
   {
dobbelt diameter=0,5;
Console.Write("Arealet af en cirkel med en diameter på {0} er {1}"Diameter,Diameter*Math.PI);
   }
       Her bruger vi en delegeret, der definerer en ThreadStart-type, som definerer den metode, tråden skal udføre: Beregn, hvor omkredsen af en cirkel med en diameter på 0,5 beregnes, og udleverer. Dette udgør det simpleste eksempel på multitrådning, hvilket i mange tilfælde er tilstrækkeligt




ParameterThreadStart:
ParameterThreadStart defineres som void ParameterizedThreadStart(objekttilstand), og opstartsfunktionen for tråden, der er defineret ved hjælp af denne delegerede, kan acceptere en inputparameter, for eksempel:



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

Beregningsmetoden har en parameter af typen objekt, selvom der kun er én parameter, og det er også en objekttype, og den skal stadig konverteres, når den bruges, men heldigvis kan der være parametre, og ved at kombinere flere parametre til en klasse og derefter sende instansen af denne klasse som parameter, kan du opnå overførsel af flere parameter. Som hvad:





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("***** Adding with Thread-objekter *****");
      Console.WriteLine("ID for tråden i Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

      AddParams ap = nye AddParams(10, 10);
      Thread t = ny Thread(ny ParameterizedThreadStart(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
}
}




Tidligere:.net/c# Crawl brugeravatarer, hent QQ-avatarer
Næste:.net/c# beregner alderen på førerens bil
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com