Delegate.BeginInvoke vs ThreadPool.QueueWorkerUserItem

    public void BeforeSendReply(ref Message reply, object correlationState)
    {
        var replyCopy = reply;

        ThreadPool.QueueUserWorkItem(delegate
        {
            RequestQueueHandler.RequestQueue.Add((Message)correlationState, replyCopy);
        });
    }

vs

    private delegate void RequestQueueHandlerAdd(Message request, Message reply);

    private static void AsyncMethod(Message request, Message reply)
    {
        RequestQueueHandler.RequestQueue.Add(request, reply);
    }

    public void BeforeSendReply(ref Message reply, object correlationState)
    {
        ((RequestQueueHandlerAdd)AsyncMethod).BeginInvoke((Message)correlationState, reply, null, null);
    }

, какой из этих двух мне следует использовать? (Что работает лучше?) почему?
накладные расходы моего метода влияет на решение или одна из этих реализаций всегда превосходит другую?
по какой причине?

Я склоняюсь к ThreadPool.QueueWorkerUserItem, но понятия не имею, какая из них на самом деле лучше , ни в этом случае, ни в целом

ОБНОВЛЕНИЕ

Я читал кое-что о TPL ... решил это:

    public void BeforeSendReply(ref Message reply, object correlationState)
    {
        var replyCopy = reply;
        var enqueue = Task.Factory.StartNew(() => RequestQueueHandler.RequestQueue.Add((Message)correlationState, replyCopy));

    }

как я должен обрабатывать здесь исключение? Я имею в виду, если я это сделаю

    public void BeforeSendReply(ref Message reply, object correlationState)
    {
        var replyCopy = reply;
        var enqueue = Task.Factory.StartNew(() => RequestQueueHandler.RequestQueue.Add((Message) correlationState, replyCopy));

        **try
        {
            enqueue.Wait();
        }
        catch(AggregateException e)
        {
            Handle(e);
        }**
    }

Я Я не упускаю из виду всю суть параллелизма?

Не следует ли мне просто обработать возможный выброс исключения в методе RequestQueueHandler.RequestQueue.Add ?

6
задан bevacqua 20 April 2011 в 14:44
поделиться