Вы должны войти, чтобы создавать сообщения и темы.

Как сделать ожидание завершения метода

Всем приветули, пожалуйста подскажите, как сделать так чтобы было ожидание завершения метода, то есть, после выполнения метода например появлялось уведомление или messagebox.

Привет, Илья 🖐
Создай булевую переменную и в конце выполнения метода поменяй её значение на Скопированоtrue, потом сделай если Скопированоtrue, то выводишь messageBox, уведомление, что угодно.

Добрый день.
Ничего не понял. Пример кода, где вы собираетесь ожидать. Код выполняется линейно за исключением многопоточных методов.
Т.е. если у вас есть код вроде:

MyFunction();
MessageBox.Show("OK");

СкопированоMessageBox.Show("OK") выполнится после того, как отработает СкопированоMyFunction().

Спойлер

    string[] Processlist =
    {
        "MicrosoftEdgeUpdate",
        "igfxEM",
        "mobsync",
        "Locator",
        "DismHost",
        "DsmUsertask",
        "AtH",
        "ApplicationFrameHost",
        "SearchFilterHost",
        "SearchProtocolHost",
        "SystemSettingsBroker",
        "ShellExperienceHost",
        "DataExchangeHost",
        "syncagentsrv",
        "ClassicStartMenu",
        "ups",
        "CLI",
        "MOM",
        "sass",
        "msiexec",
        "spoolsv",
        "PAStiSvc",
        "spupdsvc",
        "DrvUpdater",
        "GoogleUpdaterService",
        "GoogleUpdate",
        "praetorian",
        "DFDWiz",
        "jusched",
        "dasHost",
        "RuntimeBroker",
        "remoting_host",
        "schedhlp",
        "mDNSResponder",
        "iPodService",
        "SyncServer",
        "taskhostex",
        "msfeedssync",
        "SkyDrive",
        "WMIADAP",
        "ErrorReportLauncher",
        "FileIOSurrogate",
        "VegasPortable",
        "sfvstserver",
        "HelpPane",
        "SearchIndexer",
        "pacjsworker",
        "SettingSyncHost",
        "SettingSyncHost",
        "schedul2",
        "schedul2",
        "dllhost",
        "dllhost",
        "atieclxx",
        "atieclxx",
        "wmiprvse",
        "WmiPrvSE",
        "WmiPrvSE",
        "NVIDIA Web Helper",
        "WindowsInternal.ComposableShell.Experiences.textInput.InputApp",
        "TextInputHost",
        "Scheduler"
    };
    foreach (string proc in Processlist)
    {
        foreach (Process process in Process.GetProcessesByName(proc))
        {
            process.Kill();
            process.WaitForExit();
        }
    }
}
ShowDialog("Очистка Завершина", Color.FromArgb(22, 27, 41));

Вот пример, это остановка фоновых задач.


Комментарий модератора:
Просьба, клади длинный код в спойлер

Ну так, а что не так? СкопированоShowDialog() выполнится по завершению цикла.

Просто он сразу появляется, тоже самое что нажать на кнопку в которой прописан только messagebox.

Сделайте задержку, если нужно, чтобы не сразу.

Цитата: Илья от 01.11.2020, 21:24

Просто он сразу появляется, тоже самое что нажать на кнопку в которой прописан только messagebox.

Ну значит все Скопированоprocess.Kill() и Скопированоprocess.WaitForExit() отработали...

Как то это быстро слишком происходит даже не знаю, и если я поставлю СкопированоShowDialog после СкопированоWaitForExit почему то уведомления дублируются.

Цитата: Илья от 01.11.2020, 22:12

 если я поставлю СкопированоShowDialog после СкопированоWaitForExit почему то уведомления дублируются.


Вы хоть понимаете, что делает фрагмент кода:

foreach (string proc in Processlist)
    {
        foreach (Process process in Process.GetProcessesByName(proc))
        {
            process.Kill();
            process.WaitForExit();
        }
    }

?
Смотрите это:

Спойлер

Спасибо за советы, пойду разбираться дальше.)))