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 ThreadExecuter where 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 };
ThreadExecuter te = new ThreadExecuter(sm.Send, writeScreen);
te.Start();
}
Console.WriteLine("bitti.");
Console.ReadKey();
}
private static void writeScreen(Packet p)
{
Console.WriteLine(p.Id + " - " + p.Status.ToString());
}
}
}
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