There are many ways to decouple the event handler onto a different thread;
One of these might work for you;
public void Call_Comes(object sender, EventArgs e) {
Task.Factory.StartNew(() => HandleEvent(sender, e));
}
public void Call_Comes(object sender, EventArgs e) {
ThreadPool.QueueUserWorkItem(x => HandleEvent(sender, e));
}
public void Call_Comes(object sender, EventArgs e) {
var worker = new BackgroundWorker();
worker.DoWork += HandleEvent;
worker.RunWorkerAsync();
}
public void Call_Comes(object sender, EventArgs e)
{
var thread = new Thread(() => HandleEvent(sender, e));
thread.Start();
}
private void HandleEvent(object sender, EventArgs e) {
}
Note that if you do run it on a different thread you still need to handle any exceptions. You don't wan't uncaught exceptions on non-main threads.
Hope this helps,
Fredrik