Ранее я отправил еще один вопрос о получении аргументов из контекстного меню приложения. Если вы выбираете элемент, он дает вам строку пути к этому элементу, но запускает новый экземпляр приложения для каждого элемента, выбранного больше, чем один. С Environment.GetCommandLineArgs () он дает вам строковый массив, в котором первый элемент - это .exe, вызывающий функцию, а второй элемент - путь к строке выбранного элемента. Опять же, если я выберу 2 или более элементов и щелкну правой кнопкой мыши >> запустить приложение, я получу 2 или более экземпляров приложения, каждый с первым элементом в качестве .exe, а затем вторым элементом в качестве одного из выбранных элементов. (Я сделал это с помощью MessageBox.Show () после объединения двух элементов, и оно выскакивает в окне сообщения 3 раза, по 1 для каждого из трех выбранных элементов).
Теперь я использую Mutex, чтобы он мог запускаться только один раз, но я получаю только первое окно сообщения (как и ожидалось).
Как я могу получить все предметы, перечисленные в одном экземпляре, если выберу более одного предмета?
Вот код без мьютекса:
static void Main()
{
String[] args = Environment.GetCommandLineArgs();
var message = string.Join(", ", args);
MessageBox.Show(message);
}
А вот и с Mutex:
static void Main()
{
Mutex startOnlyOne = new Mutex(false, "WinSyncSingalInstanceMutx");
if (startOnlyOne.WaitOne(0, false))
{
String[] args = Environment.GetCommandLineArgs();
var message = string.Join(", ", args);
MessageBox.Show(message);
startOnlyOne.Close();
}
Никто еще не смог мне помочь с этим, я надеюсь, что кто-то может помочь мне понять это. Заранее спасибо ...