Farklı iş parçacıkları arasında veri paylaşmanın en basit yöntemi shared data
aşağıdaki gibidir (bazıları sözde koddur):
class MyThread
{
public string SharedData;
public void Worker()
{
...lengthy action, infinite loop, etc...
SharedData = "whatever";
...lengthy action...
return;
}
}
class Program
{
static void Main()
{
MyThread m = new MyThread();
Thread WorkerThread = new Thread(m.Worker);
WorkerThread.Start();
loop//or e.g. a Timer thread
{
f(m.SharedData);
}
return;
}
}
Bu yöntem hakkında çok iş parçacığı ile ilgili bu güzel girişte okuyabilirsiniz, ancak bunu O'Reilly book C# 3.0 in a nutshell
, kitabın yeni sürümü gibi Google Kitaplar'da da ücretsiz olarak erişilebilen Albahari kardeşler (2007) 'de okumayı tercih ettim. çünkü aynı zamanda güzel ve basit bir örnek kodla iş parçacığı havuzunu, ön plan ve arka plan iş parçacıklarını vb. kapsar. (Sorumluluk reddi: Bu kitabın eskimiş bir kopyasına sahibim)
Bir WinForms uygulaması yapıyorsanız, paylaşılan verilerin kullanımı özellikle kullanışlıdır çünkü WinForm kontrolleri iş parçacığı açısından güvenli değildir. Verileri çalışan iş parçacığından WinForm denetimine geri iletmek için bir geri çağrı kullanmak, ana kullanıcı arabirimi iş parçacığının Invoke()
bu denetimi iş parçacığını güvenli hale getirmek için çirkin bir kod gerektirmesi . Bunun yerine paylaşılan verileri ve 0,2 saniye gibi System.Windows.Forms.Timer
kısa bir sürede tek iş parçacıklı Interval
kullanarak, çalışan iş parçacığından kontrole olmadan kolayca bilgi gönderebilirsiniz Invoke
.