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 .
Чем объясняется это поведение?
Если я строил систему с десятками издателей/подписчиков, использующих очереди сообщений, кажется, что у меня есть несколько вариантов конфигурации сети:
Различные технологии, кажется, обеспечивают различные конфигурации - например, MSMQ требует, чтобы каждая машина имела свою собственную локальную очередь, в то время как Tibco EMS, по-видимому, часто используется в кластерах, без локальных очередей на каждом потребителе.
Каковы недостатки отсутствия локальной очереди и какие факторы влияют на принятие решения?