Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 19083|Yanıt: 0

[Kaynak] ThreadStart ve ParameterizedThreadStart farklıdır

[Bağlantıyı kopyala]
Yayınlandı 14.11.2016 10:25:44 | | |
ThreadStart:

ThreadStart delegesi void ThreadStart() olarak tanımlanır, bu da çalıştırılan yöntemin parametreleri olamayacağı anlamına gelir.
ThreadStart threadStart=yeni ThreadStart(Hesapla);
Thread thread=new Thread(threadStart);
Thread. Start();
public void Hesapla()
   {
çift Çap=0.5;
Console.Write("{0} çaplı daire alanı {1}"Diameter,Diameter*Math.PI);
   }
       Burada, iş parçacığının çalıştırması gereken yöntemi tanımlayan bir ThreadStart türünü tanımlayan bir delege kullanıyoruz: Calculate, burada 0.5 çapında bir dairenin çevresi hesaplanır ve çıktı. Bu, çoklu iş parçacığı için en basit örneğidir ve çoğu durumda yeterlidir




ParameterThreadStart:
ParameterThreadStart void ParameterizedThreadStart (object state) olarak tanımlanır ve bu delege kullanılarak tanımlanan iş parçacığının başlatma fonksiyonu bir giriş parametresini kabul edebilir, örneğin:



ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate)
Thread thread=new Thread() ;
Thread. Start(0.9);
public void Calculate(object arg)
{
çift Çap=çift(arg);
Console.Write("{0} çaplı daire alanı {1}"Diameter,Diameter*Math.PI);
}

Calculate yönteminde bir tür nesne parametresi vardır, ancak sadece bir parametre vardır ve o da bir nesne tipidir, kullanılırken yine dönüştürülmesi gerekir, ancak neyse ki parametreler olabilir ve birden fazla parametri bir sınıfta birleştirip bu sınıfın örneğini parametre olarak geçirerek çoklu parametre transferi sağlanabilir. Mesela ne:





class AddParams
{
    Kamu Int A, B;

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

Sınıf Programı
{
    statik boşluk Ana (dize[] args)
    {
      Console.WriteLine("***** İş Parçacığı nesneleri ile ekleme *****");
      Console.WriteLine("Main('deki iş parçacığı ID'si): {0}",
        Thread.CurrentThread.ManagedThreadId);

      AddParams ap = yeni AddParams(10, 10);
      Thread t = yeni Thread (yeni ParameterizedThreadStart(Ekle));
      t.Start(ap);
      Console.ReadLine();
    }

    #region Ekle yöntemi
    statik boşluk Add(nesne verisi)
    {
      if (veri AddParams)
      {
        Console.WriteLine("Main('deki iş parçacığı ID'si): {0}",
          Thread.CurrentThread.ManagedThreadId);

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




Önceki:.net/c# Kullanıcı avatarlarını tarama, QQ avatarlarını yakalamak
Önümüzdeki:.net/c# sürücünün arabasının yaşını hesaplar
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com