Создать исключение внутри задачи - «wait» vs Wait ()

static async void Main(string[] args)
{
    Task t = new Task(() => { throw new Exception(); });

    try
    {                
        t.Start();
        t.Wait();                
    }
    catch (AggregateException e)
    {
        // When waiting on the task, an AggregateException is thrown.
    }

    try
    {                
        t.Start();
        await t;
    }
    catch (Exception e)
    {
        // When awating on the task, the exception itself is thrown.  
        // in this case a regular Exception.
    }           
}

В TPL, при создании исключения внутри задачи, она переносится с AggregateException.
Но то же самое не происходит при использовании ключевого слова wait .
Чем объясняется это поведение?

-121--911043- Локальные и удаленные очереди в pub/sub-messaging Если я строил систему с десятками издателей/подписчиков, использующих очереди сообщений, кажется, что у меня есть несколько вариантов конфигурации сети: я мог бы иметь один кластерный брокер, который используют все машины -...

Если я строил систему с десятками издателей/подписчиков, использующих очереди сообщений, кажется, что у меня есть несколько вариантов конфигурации сети:

  1. Я мог бы иметь один кластерный брокер, который используют все машины - каждая машина не будет иметь локальную очередь
  2. Я могу установить брокеров локально на каждой машине и использовать хранение и пересылку для доставки сообщений на удаленные машины

Различные технологии, кажется, обеспечивают различные конфигурации - например, MSMQ требует, чтобы каждая машина имела свою собственную локальную очередь, в то время как Tibco EMS, по-видимому, часто используется в кластерах, без локальных очередей на каждом потребителе.

Каковы недостатки отсутствия локальной очереди и какие факторы влияют на принятие решения?

8
задан Paul Stovell 7 September 2011 в 21:02
поделиться