Что обозначает следующая запись, а точнее занак "?" в ней?
delegate void MessagesRecievedDelegate(
VkApi owner, ReadOnlyCollection<Message> messages);
static event MessagesRecievedDelegate NewMessages;
...
NewMessages?.Invoke(vkApi, history.Messages);
Это т.н. оператор Элвиса, он же null propagation operator. Позволяет избегать NullReferenceException. Работает он так: при попытке получить значение после ?. - он получает доступ к члену если объект до оператора не null, в противном случае выражение получает значение null - и цепочка вызовов не продолжается (в случае если там много таких операторов - obj1?.rec1?.rec2 если obj1 == null - дальнейшая цепочка не будет вычисляться - все выражение будет null). Оператор был введен в C# 6. Хорошо работает в связке с оператором ??. Позволяя творить такие штуки:
var minPrice = product?.PriceBreaks?[0]?.Price ?? 0;
В старых версиях языка - такая конструкция была бы жутким нагромождением вложенных условных переходов с проверками.
В вашем же случае, это просто защита от того, что на событие нет подписчиков, без этого оператора в случае если подписчиков нет - приложение бы выпало с ошибкой, а с ним событие попросту не возникает.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости