Как сделать ожидание завершения метода
Цитата: Илья от 01.11.2020, 16:42Всем приветули, пожалуйста подскажите, как сделать так чтобы было ожидание завершения метода, то есть, после выполнения метода например появлялось уведомление или messagebox.
Всем приветули, пожалуйста подскажите, как сделать так чтобы было ожидание завершения метода, то есть, после выполнения метода например появлялось уведомление или messagebox.
Цитата: Сергей от 01.11.2020, 16:47Привет, Илья 🖐
Создай булевую переменную и в конце выполнения метода поменяй её значение наtrue, потом сделай еслиtrue, то выводишь messageBox, уведомление, что угодно.
Привет, Илья 🖐
Создай булевую переменную и в конце выполнения метода поменяй её значение на Скопированоtrue, потом сделай если Скопированоtrue, то выводишь messageBox, уведомление, что угодно.
Цитата: Adler от 01.11.2020, 16:48Добрый день.
Ничего не понял. Пример кода, где вы собираетесь ожидать. Код выполняется линейно за исключением многопоточных методов.
Т.е. если у вас есть код вроде:MyFunction(); MessageBox.Show("OK");
MessageBox.Show("OK")выполнится после того, как отработаетMyFunction().
Добрый день.
Ничего не понял. Пример кода, где вы собираетесь ожидать. Код выполняется линейно за исключением многопоточных методов.
Т.е. если у вас есть код вроде:
MyFunction();
MessageBox.Show("OK");
СкопированоMessageBox.Show("OK") выполнится после того, как отработает СкопированоMyFunction().
Цитата: Илья от 01.11.2020, 16:51[spoiler]
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));[/spoiler]
Вот пример, это остановка фоновых задач.
[MNotice]Просьба, клади длинный код в спойлер[/MNotice]
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));
Вот пример, это остановка фоновых задач.
Комментарий модератора:
Просьба, клади длинный код в спойлер
Цитата: Adler от 01.11.2020, 17:16Ну так, а что не так?
ShowDialog()выполнится по завершению цикла.
Ну так, а что не так? СкопированоShowDialog() выполнится по завершению цикла.
Цитата: Илья от 01.11.2020, 21:24Просто он сразу появляется, тоже самое что нажать на кнопку в которой прописан только messagebox.
Просто он сразу появляется, тоже самое что нажать на кнопку в которой прописан только messagebox.
Цитата: Сергей от 01.11.2020, 21:26Сделайте задержку, если нужно, чтобы не сразу.
Сделайте задержку, если нужно, чтобы не сразу.
Цитата: Adler от 01.11.2020, 21:41Цитата: Илья от 01.11.2020, 21:24Просто он сразу появляется, тоже самое что нажать на кнопку в которой прописан только messagebox.
Ну значит все
process.Kill()иprocess.WaitForExit()отработали...
Цитата: Илья от 01.11.2020, 21:24Просто он сразу появляется, тоже самое что нажать на кнопку в которой прописан только messagebox.
Ну значит все Скопированоprocess.Kill() и Скопированоprocess.WaitForExit() отработали...
Цитата: Илья от 01.11.2020, 22:12Как то это быстро слишком происходит даже не знаю, и если я поставлю
ShowDialogпослеWaitForExitпочему то уведомления дублируются.
Как то это быстро слишком происходит даже не знаю, и если я поставлю СкопированоShowDialog после СкопированоWaitForExit почему то уведомления дублируются.
Цитата: Adler от 01.11.2020, 22:18Цитата: Илья от 01.11.2020, 22:12если я поставлю
ShowDialogпослеWaitForExitпочему то уведомления дублируются.
![]()
Вы хоть понимаете, что делает фрагмент кода:foreach (string proc in Processlist) { foreach (Process process in Process.GetProcessesByName(proc)) { process.Kill(); process.WaitForExit(); } }?
Смотрите это:
[spoiler][/spoiler]
Цитата: Илья от 01.11.2020, 22:12если я поставлю
СкопированоShowDialogпослеСкопированоWaitForExitпочему то уведомления дублируются.

Вы хоть понимаете, что делает фрагмент кода:
foreach (string proc in Processlist)
{
foreach (Process process in Process.GetProcessesByName(proc))
{
process.Kill();
process.WaitForExit();
}
}
?
Смотрите это:
Цитата: Илья от 01.11.2020, 22:24Спасибо за советы, пойду разбираться дальше.)))
Спасибо за советы, пойду разбираться дальше.)))