ThreadExecuter sınıfım Thread içersinde çalıştırılacak sınıf fonsiyonu ve sonunda değer döndürecek bir fonksiyon istemektedir.
public class ThreadExecuterwhere T : class { public delegate void CallBack (T returnValue); public delegate T Method(); private CallBack callBack; private Method method; private Thread t; public ThreadExecuter(Method _method, CallBack _callBack) { this.method = _method; this.callBack = _callBack; t = new Thread(this.Process); } public void Start() { t.Start(); } public void Abort() { t.Abort(); callBack(null); } public void Join() { t.Join(); } private void Process() { callBack(method()); } }
Test ordamında kodumuzu deniyelim.
namespace Tester { class Program { static void Main(string[] args) { #region [ Paket Data] ... #endregion for (int i = 0; i < 20; i++) { Packet packet = new Packet() { Data = data, Host = "www.google.com.tr", Port = 80, Id = i }; SocketManager sm = new SocketManager() { packet = packet }; ThreadExecuterte = new ThreadExecuter } Console.WriteLine("bitti."); Console.ReadKey(); } private static void writeScreen(Packet p) { Console.WriteLine(p.Id + " - " + p.Status.ToString()); } } }(sm.Send, writeScreen); te.Start();
Eğer ki Join kullanarak gerçekleştirdiğimizde ;
ThreadExecuterte = new ThreadExecuter (sm.Send, writeScreen); te.Start(); te.Join();
Hiç yorum yok:
Yorum Gönder