Как заставить 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 файлик обратно в строку и уже обработать её. У меня в принципе получилось даже, но при попытке передавать так много команд сразу всё ломалось. Может посоветуете литературу, которая просвятит меня?