|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ThreadBound
{
class PoolSynchronizationContext :
SynchronizationContext
{
public PoolSynchronizationContext()
{
}
public override void Post(SendOrPostCallback d, object state)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(d.Invoke), state);
}
public override void Send(SendOrPostCallback d, object state)
{
//-- Use the SyncWorkQueueItem to be able to wait for the call to finish
SyncWorkQueueItem syncQueueItem=new SyncWorkQueueItem(d, state);
ThreadPool.QueueUserWorkItem(new WaitCallback(syncQueueItem.Invoke), null);
//-- Auf das Ende der Operation warten und ggf. Exceptions erneut werfen
syncQueueItem.Join();
syncQueueItem.RethrowException();
}
public override SynchronizationContext CreateCopy()
{
return new PoolSynchronizationContext();
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.