Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 19083|Odpověď: 0

[Zdroj] ThreadStart a ParameterizedThreadStart jsou odlišné

[Kopírovat odkaz]
Zveřejněno 14.11.2016 10:25:44 | | |
ThreadStart:

Delegát ThreadStart je definován jako void ThreadStart(), což znamená, že metoda vykonaná nemůže mít parametry.
ThreadStart threadStart=new ThreadStart(Calculate);
Vlákno = nové Vlákno(vláknoStart);
vlákno. Start();
public void Calculate()
   {
dvojitý průměr=0,5;
Console.write("Plocha kruhu s průměrem {0} je {1}"Diameter, Diameter*Math.PI);
   }
       Zde používáme delegáta, který definuje typ ThreadStart, který definuje metodu, kterou vlákno potřebuje k vykonání: Calculate, kde se vypočítá obvod kruhu s průměrem 0,5, a výstup. To představuje nejjednodušší příklad vícevláknového zpracování, což je v mnoha případech dostačující




ParameterThreadStart:
ParameterThreadStart je definován jako void ParameterizedThreadStart(stav objektu) a startovací funkce vlákna definovaného pomocí tohoto delegáta může přijímat vstupní parametr, například:



ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate)
Vlákno = nové Vlákno() ;
vlákno. Start (0,9);
veřejná prázdnota Calculate(objekt arg)
{
dvojitý průměr=dvojitý(arg);
Console.write("Plocha kruhu s průměrem {0} je {1}"Diameter, Diameter*Math.PI);
}

Metoda Calculate má parametr typu objekt, i když existuje pouze jeden parametr, a je to také typ objektu, a při jeho použití je stále potřeba převádět, ale naštěstí mohou existovat parametry, a kombinací více parametrů do třídy a následným předáním instance této třídy jako parametru lze dosáhnout přenosu více parametrů. Jako co:





třída AddParams
{
    veřejná int a, b;

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

Program tříd
{
    static void Main (string[] args)
    {
      Console.WriteLine("***** Sčítání pomocí objektů Thread *****");
      Console.WriteLine("ID vlákna v Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

      AddParams ap = nové AddParams(10, 10);
      Vlákno t = nové vlákno (nový parametrizovanýVláknoStart(Add));
      t.Start(ap);
      Console.ReadLine();
    }

    #region Metoda přidání
    statická prázdnota Přidat (data objektu)
    {
      pokud (data jsou AddParams)
      {
        Console.WriteLine("ID vlákna v Main(): {0}",
          Thread.CurrentThread.ManagedThreadId);

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




Předchozí:.net/c# Procházet uživatelské avatary, stahovat QQ avatary
Další:.net/c# vypočítává stáří řidičova auta
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com