Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 19083|Antwort: 0

[Quelle] ThreadStart und ParameterizedThreadStart sind unterschiedlich

[Link kopieren]
Veröffentlicht am 14.11.2016 10:25:44 | | |
ThreadStart:

Der ThreadStart-Delegierte ist als void ThreadStart() definiert, was bedeutet, dass die ausgeführte Methode keine Parameter haben kann.
ThreadStart threadStart=neuer ThreadStart (Berechnen);
Thread thread=neuer Thread (threadStart);
Faden. Start();
Public Void Calculate()
   {
doppelter Durchmesser=0,5;
Console.Write ("Die Fläche des Kreises mit einem Durchmesser von {0} ist {1}"Durchmesser, Durchmesser*Math.PI);
   }
       Hier verwenden wir einen Delegaten, der einen ThreadStart-Typ definiert, der die Methode definiert, die der Thread ausführen muss: Calculate, bei dem der Umfang eines Kreises mit einem Durchmesser von 0,5 berechnet wird, und gibt aus. Dies stellt das einfachste Beispiel für Multithreading dar, was in vielen Fällen ausreicht




ParameterThreadStart:
ParameterThreadStart ist definiert als void ParameterizedThreadStart (Objektzustand), und die Startfunktion des mit diesem Delegaten definierten Threads kann zum Beispiel einen Eingabeparameter akzeptieren:



ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate)
Thread thread=neuer Thread() ;
Faden. Start(0,9);
Public Void Calculate(object arg)
{
doppelter Durchmesser=doppelt(arg);
Console.Write ("Die Fläche des Kreises mit einem Durchmesser von {0} ist {1}"Durchmesser, Durchmesser*Math.PI);
}

Die Calcald-Methode hat einen Parameter vom Typ Objekt, obwohl es nur einen Parameter gibt, der ebenfalls ein Objekttyp ist, der bei der Nutzung noch konvertiert werden muss, aber glücklicherweise gibt es Parameter, und indem man mehrere Parameter zu einer Klasse kombiniert und dann die Instanz dieser Klasse als Parameter übergibt, kann man einen Mehrparametertransfer erreichen. Zum Beispiel:





Klasse AddParams
{
    öffentliche Int A, B;

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

Klassenprogramm
{
    statisches Void Haupt(string[] args)
    {
      Console.WriteLine("***** Hinzufügen mit Thread-Objekten *****");
      Console.WriteLine("ID des Threads in Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

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

    #region Add-Methode
    statisches Void-Add(Objektdaten)
    {
      wenn (Daten sind AddParams)
      {
        Console.WriteLine("ID des Threads in Main(): {0}",
          Thread.CurrentThread.ManagedThreadId);

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




Vorhergehend:.net/c# Nutzer-Avatare crawlen, QQ-Avatare abnehmen
Nächster:.net/c# berechnet das Alter des Autos des Fahrers
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com