Я предполагаю, что под «внешним приложением» вы подразумеваете нечто, находящееся за пределами пространства процесса кода C #.Кроме того, я предполагаю, что вы не имеете в виду события C # - которые не являются концепцией, существующей вне домена реализации .NET - они не являются чем-то доступным извне кода.
Таким образом, общий ответ на этот вопрос таков: «Да, это возможно», но, поскольку вы, по сути, пытаетесь отправить межпроцессные уведомления, вам нужно будет использовать какой-то механизм IPC .
.NET имеет богатый API для выполнения IPC - от именованных каналов до DCOM и низкоуровневых сетевых протоколов, таких как TCP / IP.Какой подход вы используете, зависит от среды, в которой эти процессы должны взаимодействовать (на одной машине, между компьютерами в интрасети, через Интернет и т. Д.).Это также будет зависеть от вида информации, которой вы обмениваетесь, и того, сколько усилий вы готовы потратить.Для приложений .NET 3.5 обычно можно найти поддерживаемую реализацию, используя WCF в качестве объединяющей структуры .
Очевидно, все это зависит от вашей способности изменять реализацию (читать исходный код).NET-приложение, в котором вы пытаетесь вызвать событие.Если вы не можете этого сделать, и в этом коде нет механизма IPC, вы, вероятно, застряли.
ОБНОВЛЕНИЕ: В ответ на ваш комментарий:
Что бы вы сделалирекомендую с приоритетом легкости и времени.Оба приложения работают на одной и той же машине, и я пишу их обоим
Я бы подумал об использовании Именованные каналы .Именованные каналы изначально были концепцией Unix, но они также доступны и в Windows.У них очень простой интерфейс программирования (они похожи на работу с файлами), и им не нужно много использовать в сценарии с одним компьютером.
На стороне Ruby (с которым я менее знаком)Вот несколько ссылок, которые могут оказаться полезными:
На стороне .NET приведены некоторые ссылки для получения дополнительной информации: