Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 19083|Odpowiedź: 0

[Źródło] ThreadStart i ParametrizedThreadStart to różne rzeczy

[Skopiuj link]
Opublikowano 14.11.2016 10:25:44 | | |
ThreadStart:

Delegat ThreadStart definiowany jest jako void ThreadStart(), co oznacza, że metoda wykonywana nie może mieć parametrów.
ThreadStart ThreadStart=nowy ThreadStart(Calculate);
Wątek = nowy Wątek(wątkStart);
wątek. Start();
public void Calculate()
   {
podwójna średnica=0,5;
Console.write("Obszar okręgu o średnicy {0} to {1}"Średnica, średnica*Math.PI);
   }
       Tutaj używamy delegata, który definiuje typ ThreadStart, który określa metodę, jaką wątek musi wykonać do wykonania: Calculate, w którym obliczany jest obwód okręgu o średnicy 0,5, i wyprowadza je. To jest najprostszy przykład wielowątkowości, który w wielu przypadkach wystarcza




ParametryWątekStart:
ParameterThreadStart jest definiowany jako void ParametrizedThreadStart(stan obiektu), a funkcja startowa wątku zdefiniowanego za pomocą tego delegata może akceptować parametr wejściowy, na przykład:



ParametryzowanyWątekWątkStart=nowy ParametryzowanyWątkStart(Obliczaj)
Wątek wątkowy=nowy wątek() ;
wątek. Start(0,9);
public void Calculate(object arg)
{
podwójna średnica=podwójna(arg);
Console.write("Obszar okręgu o średnicy {0} to {1}"Średnica, średnica*Math.PI);
}

Metoda Calculate ma parametr typu obiekt, choć jest tylko jeden parametr, jest on również typem obiektu i nadal musi być konwertowany podczas jego użycia, ale na szczęście mogą istnieć parametry, a łącząc wiele parametrów w klasę, a następnie przekazując instancję tej klasy jako parametr, można uzyskać transfer wielu parametrów. Na przykład co:





klasa AddParams
{
    publiczne int a, b;

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

Program klasowy
{
    static void Main (string[] args)
    {
      Console.WriteLine("***** Dodawanie za pomocą obiektów wątków *****");
      Console.WriteLine("ID wątku w Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

      AddParams ap = nowe AddParams(10, 10);
      Wątek t = nowy wątek(nowy parametryzowanyWątekStart(Dodaj));
      t.Start(ap);
      Console.ReadLine();
    }

    #region Metoda dodawania
    statyczna pustka Dodaj (dane obiektu)
    {
      jeśli (dane to AddParams)
      {
        Console.WriteLine("ID wątku w Main(): {0}",
          Thread.CurrentThread.ManagedThreadId);

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




Poprzedni:.net/c# Przeszukuj awatary użytkowników, pobierz awatary QQ
Następny:.net/c# oblicza wiek samochodu kierowcy
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com