Как заставить 2 программы сообщать что-то друг другу?

Есть 2 программы. Одна программа находится в вечном цикле, и мне нужна вторая программа, чтоб при вызове её она посылала первой программе сообщение, что нужно сделать abort основного потока, и уже после первая программа обработает исключение, которое вызовет abort и закончится как надо. Вот только я не знаю как реализовать передачу данных, и как правильно принять данные. Я пробовал читать статьи по IPC, но толком ничего не понял. Мне было бы хорошо, чтоб при получении сообщения в первой программе вызывался делегат, который обработает сообщение.

Примерно так выглядят программы:

Первая программа

class Timer
    {
        delegate void ProcessMessage(string msg);
        static void Main(string[] args)
        {
            Thread MainThread = Thread.CurrentThread;
            var processMessage = new ProcessMessage((string msg) =>
            {
                switch (msg) 
                {
                    case "StopWork":
                MainThread.Abort();
                        break;
                //......
                }
            });

            //где то тут мне бы новый поток, который передаст входящее сообщение в 
            //processMessage которое уже что то сделает

            try
            {
                bool a = true;
                while (a)
                {
                    Thread.Sleep(1000);
                    DoSomethin();
                }
            }
            catch (ThreadAbortException)
            {
                //....
            }
        }

Вторая программа что то вроде этого

class Communicator
    {

        static void Main(string[] args)
        {
            //agrs[1] - куда отправлять, args[2] - что отправить
            SendMessage(args[1], args[2]);
        }
    }

Я пробовал делать неприличные вещи в виде создания бинарного файла от объекта string, который и является сообщением, потом первой программой разобрать .bin файлик обратно в строку и уже обработать её. У меня в принципе получилось даже, но при попытке передавать так много команд сразу всё ломалось. Может посоветуете литературу, которая просвятит меня?


Ответы (0 шт):