Почему обработка событий в родном Visual C++ не рекомендуется?

http://msdn.microsoft.com/en-us/library/ee2k0a7d.aspx

Обработка событий также поддерживается для собственных классов C++ (классов C++, которые не реализуют объекты COM), однако эта поддержка устарела и будет удалена в следующем выпуске.

Кто-нибудь знает почему? Не удалось найти объяснения этому утверждению.

4 ответа

Решение
  1. Это совершенно нестандартный Kludge, который, вероятно, имеет очень мало реальных пользователей. И я имею в виду нестандартный клудж даже в частном мире WinNT и Microsoft.

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

  3. Этот смертоносен - эта функциональность выполняет неявную блокировку (вероятно, идея нашего дедушки "синхронизировать" перед шаблонами и широко использовать безопасные нормальные критические секции). Это делает его более опасным, чем отдельная квартира COM, хм, вещь:-) Так как он может дать вам тупик из ниоткуда (это случилось и с синхронизированными методами Java - ничего особенного:-)

  4. Все и их собаки знают, как использовать обычные многопоточность и, по крайней мере, критические секции с умными указателями, поэтому, помимо того, что это опасно, эта вещь также не имеет значения.

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

Я рискнул бы предположить, и это просто, что подобная функциональность может быть достигнута библиотекой типов сигналов / слотов более переносимым / стандартным способом C++ (с шаблонами) вместо того, чтобы требовать поддержки компилятора MS.

Другие вопросы по тегам