Я не хочу блокировать некоторый код между процессами, это в основном для моего приложения UWP, но поскольку это кросс-платформенный проект, этот фрагмент кода также выполняется в приложении для Android:Xamarin Android: Semaphore.TryOpenExisting не работает
if (!Semaphore.TryOpenExisting("some_name", out _semaphore))
_semaphore = new Semaphore(1, 1, "some_name");
Где _semaphore является:
private readonly Semaphore _semaphore;
Так что теперь, когда Semaphore.TryOpenExisting
называется, я получаю следующее исключение: System.NotSupportedException: Specified method is not supported.
.
Но, глядя на Xamarin Docs, похоже, что выполняется Semaphore.TryOpenExisting
, и я не вижу никакой информации, которая не поддерживается на некоторых платформах?
Что я делаю неправильно? Должен ли я расколоть класс Semaphore
для кросс-платформенного? Как я могу достичь этого в кросс-платформенном сценарии?
какой-либо причине вы не можете использовать что-то вроде SemaphoreSlim? Чего вам нужно сделать, чего с этим не может быть достигнуто? – Cheesebaron
'СемафорСлим' - это локальный семафор для блокировки в приложении и не имеет функций для названных семафоров. Мне нужен межпроцесс под названием Семафор –