Я тестирую некоторый многопоточный код, и с помощью LinqPad я заметил, что могу получить одноименный Mutex из двух разных вкладок LinqPad.После диагностики я, пока я понял, что это происходит только в LinqPad, а не в обычном коде.
Любая помощь, почему это происходит?AFAIK LinqPad использует разные домены приложений для выполнения каждой вкладки, но я не уверен, как это должно что-то изменить, поскольку я использую именованный мьютекс.
Вот код:
var mutexName = @"Global\TestMutex".Dump();
var createdNew = false;
var mtx = new Mutex(true, mutexName, out createdNew);
(createdNew ? "I own the mutex" : "I don't own the mutex").Dump();
mtx.WaitOne(); // Not really necessary
"I aquired the mutex".Dump();
string.Format("PID: {0} ThreadID: {1} AppDomainID: {2}",
Process.GetCurrentProcess().Id,
AppDomain.GetCurrentThreadId(),
AppDomain.CurrentDomain.Id).Dump();
Util.ReadLine();
ВставитьЭтот код разделен на две вкладки LinqPad, и он будет последовательно воспроизводить проблему, хотя иногда вам придется остановиться и запустить вторую вкладку.