Запустите приложение, но если оно уже запущено, запустите метод в существующем приложении / потоке / процессе - PullRequest
0 голосов
/ 15 октября 2019

Я могу передать аргументы в мое приложение при запуске, которое прекрасно работает! Я также могу остановить запуск нескольких экземпляров приложения, и это здорово. Однако я пытаюсь передать аргумент в приложение, но если приложение уже запущено, запустите метод на существующей winform, вместо того, чтобы пытаться открыть новый экземпляр. Я пытался использовать application.openforms, и он не работает для меня.

Я пытался использовать код, подобный следующему:

if (System.Windows.Forms.Application.OpenForms["MainMenu"] != null)
    {
        (System.Windows.Forms.Application.OpenForms["MainMenu"] as Form1).Output();
    }

Program.cs

static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);


            if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1)
            {
                MessageBox.Show("BorisCRM is already running. Only one instance of this application is allowed");
            }
            else
            {
                if (args.Length > 0)
                    Application.Run(new Forms.MainMenu(args[0]));
                else
                    Application.Run(new Forms.MainMenu("NoArg"));
            }
        }

MainMenu Form:

        if (s != "NoArg")
        {
            NewForm frm = new NewForm(getclient);
            frm.MdiParent = this;
            frm.Show();
        }

ЭТО РАБОТАЕТ .... открыть приложение - открывает форму меню, где я могу выбрать пункты меню, которые открывают формы, используя меню в качестве mdiparent.

ЭТО РАБОТАЕТ .... открыть приложение с аргументом -открывает форму меню и автоматически открывает другую форму, используя меню в качестве родительского mdi.

ЭТО НЕ РАБОТАЕТ ... открыть приложение с аргументом (если приложение уже запущено) - существующая форма меню автоматически открывает другую формуиспользуя меню в качестве родительского mdi.

1 Ответ

0 голосов
/ 15 октября 2019

Мьютекс - единственный !!! Спасибо Алессандро Д'Андрия

Я использовал этот пример: http://sanity -free.org / 143 / csharp_dotnet_single_instance_application.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...