Предложение:
Включите тип объекта (в данном случае Mutex) и пространство имен приложения в уникальное имя. Как правило, это будет безопасно. Если вы действительно хотите быть в безопасности, добавьте также Guid.
Пример:
string mutexName = "MUTEX: Skyz.Messaging.ThreadPooling.MyAppSingleInstance";
Преимущества:
Создавая соглашение об именах для ваших приложений, вы облегчаете управление многими именами объектов, создаете более читаемый код и очень легко для существующих и будущих разработчиков понять код.
Совет:
Вместо использования Mutex Direct в вашем коде напишите многократно используемый класс-обертку, который может сделать код более понятным в случае, если вы захотите изменить реализацию или добавить настройку. Не забудьте удалить Mutex, используя одноразовый шаблон, иначе у вас будут проблемы!
using (SingletonProcess singletonProcess = new SingletonProcess("MUTEX: Skyz.Apps.MessagingQueue.InstanceMarker"))
{
if (singletonProcess.IsDuplicateInstance)
{
ConsoleWriter.WriteColorLine("An instance of the ExporterService exists, you cannot start a second instance.");
return
}