if (!isOneWay)
{
sinkStack.Push (this, connection);
- ThreadPool.QueueUserWorkItem (new WaitCallback(ReadAsyncUnixMessage), sinkStack);
+ ThreadPool.QueueUserWorkItem (new WaitCallback(data => {
+ try {
+ ReadAsyncUnixMessage (data);
+ } catch {}
+ }), sinkStack);
}
else
connection.Release();
if (!isOneWay)
{
sinkStack.Push (this, connection);
- ThreadPool.QueueUserWorkItem (new WaitCallback(ReadAsyncTcpMessage), sinkStack);
+ ThreadPool.QueueUserWorkItem (new WaitCallback(data => {
+ try {
+ ReadAsyncTcpMessage (data);
+ } catch {}
+ }), sinkStack);
}
else
connection.Release();
internalCache = new Cache ();
internalCache.DependencyCache = internalCache;
#endif
- do_RealProcessRequest = new WaitCallback (RealProcessRequest);
+ do_RealProcessRequest = new WaitCallback (state => {
+ try {
+ RealProcessRequest (state);
+ } catch {}
+ });
}
#region AppDomain handling
// Just for testing..
Thread.Sleep(100);
_completed = true;
- _callback(this);
+ try {
+ _callback(this);
+ } catch {}
}
}
}
{
_done = new AutoResetEvent (false);
_doNext = new AutoResetEvent (false);
- ThreadPool.QueueUserWorkItem (new WaitCallback (AsyncRun), null);
+ ThreadPool.QueueUserWorkItem (new WaitCallback (param => {
+ try {
+ AsyncRun (param);
+ } catch {}
+ }), null);
}
public AppDomain AppDomain
buffer = new byte [4096];
readState = ReadState.None;
Data = new WebConnectionData ();
- initConn = new WaitCallback (InitConnection);
+ initConn = new WaitCallback (state => {
+ try {
+ InitConnection (state);
+ } catch {}
+ });
queue = group.Queue;
abortHelper = new AbortHelper ();
abortHelper.Connection = this;
public virtual IMessageCtrl AsyncProcessMessage (IMessage reqMsg, IMessageSink replySink)
{
AsyncRequest req = new AsyncRequest (reqMsg, replySink);
- ThreadPool.QueueUserWorkItem (new WaitCallback (SendAsyncMessage), req);
+ ThreadPool.QueueUserWorkItem (new WaitCallback ((data) => {
+ try {
+ SendAsyncMessage (data);
+ } catch {}
+ }
+ ), req);
return null;
}
public IMessageCtrl AsyncProcessMessage (IMessage msg, IMessageSink replySink)
{
object[] parms = new object[] {msg, replySink};
- ThreadPool.QueueUserWorkItem (new WaitCallback (ExecuteAsyncMessage), parms);
+ ThreadPool.QueueUserWorkItem (new WaitCallback ((data) => {
+ try {
+ ExecuteAsyncMessage (data);
+ } catch {}
+ }
+ ), parms);
return null;
}
private void DoCallBack (object timedOut)
{
- if (_callback != null)
- _callback (_state, (bool)timedOut);
+ if (_callback != null) {
+ try {
+ _callback (_state, (bool)timedOut);
+ } catch {}
+ }
lock (this)
{
list.RemoveAt (i);
count--;
i--;
- ThreadPool.QueueUserWorkItem (new WaitCallback (timer.callback), timer.state);
+ ThreadPool.QueueUserWorkItem (new WaitCallback (data => {
+ try {
+ timer.callback (data);
+ } catch {}
+ }), timer.state);
long period = timer.period_ms;
long due_time = timer.due_time_ms;
bool no_more = (period == -1 || ((period == 0 || period == Timeout.Infinite) && due_time != Timeout.Infinite));