صافي / مونو سينغلتون (خدمة / خادم؟) في C # - الكشف عن حالة بلدي التطبيق صافي قيد التشغيل وتمرير وسائط سطر الأوامر إليها

StackOverflow https://stackoverflow.com/questions/810181

  •  03-07-2019
  •  | 
  •  

سؤال

وأود أن إنشاء تطبيق بسيط فلكس المفرد (خدمة؟) في C # أنه عندما تم تشغيله، فإنه فحص لمعرفة ما إذا كان يعمل بالفعل، وإذا كان الأمر كذلك، فإنه تمرير وسائط سطر الأوامر ل بالفعل تشغيل المثال وأغلق نفسها. الآن في المقام التشغيل بالفعل فإنه تلقي وسائط سطر الأوامر من خلال حدث مثل "مندوب الفراغ قيادة (سلسلة [] وسائط)؛" أو شيء من هذا القبيل، حتى أتمكن من إدارة سطر الأوامر من خلال تطبيق واحد عبر الأحداث.

وعلى سبيل المثال في الفوتوشوب، عند فتح صورة لأول مرة، فإنه يقوم بتحميل فوتوشوب مثيل جديد، ولكن عند فتح الصورة الثانية، فإنه يتحقق لمعرفة ما إذا مثيل فوتوشوب قيد التشغيل، وإذا كان ، يمرر الصورة إلى مثيل تحميلها بالفعل من فوتوشوب لذلك يمكن تجنب مكلفة الحمل وقت فوتوشوب من جديد ...

وأو في متصفح الويب، يمكنك تعيين حتى إذا قمت بفتح ملف .html جديد، فإنه يفتح عنه في علامة تبويب جديدة، لا مثيل نافذة جديدة.

وأو العديد من برامج تحرير النصوص لإعدادات للسماح فقط مثيل واحد من محرر النصوص مفتوحة وعندما يتم فتح ملف جديد، لتحميله في علامة تبويب جديدة، وليس نافذة جديدة ...

والعديد من مشغلات الموسيقى مثل برنامج Winamp القيام بذلك أيضا ...

وانا ذاهب الى نهاية المطاف أن إعداد هذا كخدمة، لذلك ينبغي أن يكون دائما الاستماع لوسائط سطر الأوامر في وقت لاحق، لكنه الآن انها في معظمها حتى أستطيع أن إدارة فتح ملفات من نوع معين معا في واحد تطبيق المفرد، أو أن تكون لها تطبيقات أخرى تمر وسائط سطر الأوامر من الملفات التي تريد أن تفتح ...

وبالإضافة إلى ذلك، إذا كنت تعرف طريقة أفضل أو المعهد في صافي لإعادة هزيمة جميع وسائط سطر الأوامر مرت، لحدث لخدمة يعمل بنظام التشغيل دائما، ويمكن أن تعمل مع هذا ... ولكن أنا ترغب أيضا للحفاظ على هذا عبر منصة لذلك يمكن تشغيل لينكس / ماك على مونو إذا كان ذلك ممكنا، من دون الحاجة إلى إدارة اثنين أو أكثر من قواعد رمز ...

هل كانت مفيدة؟

المحلول

وهذه هي المادة الأولى تستخدم لتنفيذ وظائف الدقيقة التي تبحث عنها، لأنها تتيح لك نقل وسائط سطر الأوامر أيضا.

وحيد مثيل C # التطبيق - ل. NET 2.0

نصائح أخرى

ولقد فعلنا شيئا متشابهة باستخدام الرغم من أن لغرض مختلف جدا باستخدام صافي عن بعد على 1.0 / 1.1 الإطار. في الأساس كنا استخدام إشارة لضمان كنا سبيل المثال فقط قيد التشغيل. فأنت تريد أن استهداف مساحة الاسم العالمي، إذا كنت تريد أن يكون لها مثيل واحد فقط لكل جهاز أو المحلي إذا كنت تريد واحدة في جلسة عمل المستخدم (في خدمة محطة وسريعة سيناريوهات تبديل المستخدم).

إذا يمكنك قفل semphore، سوف الاتصال عن بعد الإعداد وبدء الاستماع للأحداث، ومن ثم على تواصل مع التعليمات البرمجية.

وإذا لم تتمكن من تأمين ثم يمكنك asssume لديك آخر المثيل الذي يعمل في هذه الحالة عليك فتح قناة الاتصال عن بعد إلى حالة أخرى تمرير وسائط والاغلاق.

هل يمكن أن حاول استخدام كائن مزامنة المسماة (تسمية أنها سوف تجعل من النظام على نطاق واسع، ويسهل التعرف عليها). مع مزامنة، يمكنك إما تشغيل مثيل (في حالة وجود أي كائن مزامنة مع الاسم)، أو يمكنك فتح المثيل الموجود وتمرير في المعلمات الخاصة بك. الاعتذار عن أي نموذج التعليمات البرمجية، كتابة هذا من هاتفي.

وتحرير: nvrmnd. فقط نعيد قراءة هذا المنصب، وأنا لا أعتقد أن هذا سوف تعمل من أنت ذاهب عبر منصة.

والبصرية الأساسية له هذا في المدمج. نلقي نظرة على:

وMicrosoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase - ملفه StartupNextInstance الحدث

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top