Если есть возможность отойти от C#, то есть Delphi и FMX с кроссплатформенным фреймворком. Мощнее и удобнее WinForms и WPF. Этот фреймворк, кстати поддерживает и C++, если использовать CBuilder
Если купить один раз продукт, то можешь использовать дальше без отчислений и прочего. RAD Studio (Delphi или C++)
Фреймворк там FMX с исходниками, кроссплатформенный (включая мобильные и десктопные ОС)
Можно написать приложение-службу на Андроид, которое реагирует на уведомления на телефоне (так и СМС будут и уведомления от приложения, нужно только их отличать или наоборот определять идентичность). Ну и пересылать информацию через бота.
Собственно я описал в одном из ответов в комментах свой ответ. Хорошим выбором для создания приложений под десктоп будет Delphi. Скорость создания интерфейсов в нем выше всех, скорость исполнения кода сравнивается с плюсами. Поддержка коммьюнити имеется, в частности есть и официальная поддержка и сторонняя. (SO, чаты в телеге, дискорд, в том числе официальные). Среда и язык регулярно обновляются (раз в 3 месяца патчи, обновы, крупные релизы каждые пол года-год). Имеется кроссплатформа под все основные ОС (Win/Linux/MaxOS/Android/iOS).
Все методы изначально пишутся без обработки исключений и следовательно все методы могут кинуть исключение. Писать в каждом методе обработку ошибок просто так - глупо, тем более, если нет корректного противодействия ошибкам. Помимо всего этого, если ты втупую не будешь глушить все исключения без исключения (хе-хе), а обрабатывать только известные тебе исключения, то никто тебе не гарантирует, что не возникнет исключение, которое будет проброшено наверх, которое ты не обрабатываешь
writeln - это на самом деле вообще не функция (и не процедура). Это особая конструкция языка, которых не мало. Эту конструкцию компилятор переводит по-своему. Интересной демонстрацией будет вот такой код
var N := 100.2;
writeln(N:1:1);
Двоеточие позволяет форматировать вывод. А такой способ формирования доступен только для writeln и больше нигде.
redirect_uri (обязательный параметр) — Адрес, на который будет переадресован пользователь после прохождения авторизации (домен указанного адреса должен соответствовать основному домену в настройках приложения).