2 локальных и запущенных приложения: Приложение №1 периодически (timer1 @ 30sec) записывает «пинг» в общую / кросспроцессную строку. Приложение № 2 периодически проверяет (timer2 @ 60sec), если общая строка == "ping", и перезаписывает ее на "pong". Поскольку timer2> timer1 Приложение № 2 всегда будет получать / читать строку как «пинг». Если нет, то я с уверенностью могу предположить, что приложение № 1 разбилось / зависает, и перезапустите его.
Я знаю, что с буфером обмена это можно сделать очень просто ...
Clipboard.Clear();
Clipboard.SetData("checkthis", "ping");
.
.
.
object clip = Clipboard.GetData("checkthis")
if (clip.ToString() == "ping")
{
Clipboard.Clear();
Clipboard.SetData("checkthis", "pong");
}
... но я думаю, что использовать буфер обмена - плохая идея, поскольку пользователь может легко его испортить. Есть ли другое решение, столь же простое в использовании, как буфер обмена?
2 ответа
Файлы с отображением памяти - это один из подходов: http: //msdn.microsoft.com/en-us/library/vstudio/dd997372(v=vs.100).aspx выполнит свою работу.
Именованные каналы - другое.
Обычная файловая работа тоже. Просто пусть каждый процесс поместит FileSystemWatcher
в файл и прислушивается к изменениям.
Я думаю, что эта ветка в SO поможет вам решить вашу проблему. Удачи!
Поведение статических членов с несколькими экземплярами приложения - C #
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.