В Windows 10 у меня есть процесс, который я создал для запуска в фоновом режиме, который инициализируется при запуске. Когда компьютер переходит в спящий режим, он крашит окна и дает мне BSOD.
Я открыт для любого решения, однако в настоящее время я пытаюсь убить процесс, когда происходит событие «Приостановить» PowerModeChanged. Не похоже, что этого достаточно, чтобы убить процесс до того, как машина перейдет в состояние гибернации, и машина все еще дает сбой. Мой прослушиватель PowerModeChanged определенно работает, и это определенно вторичный процесс, вызывающий сбой машины.
Я немного новичок в разработке фоновых процессов, и я весь день пробовал разные подходы с незначительным прогрессом. Наверняка кто-то должен иметь опыт с этим и знает решение.
// Application path and command line arguments
static string ApplicationPath = @"C:\path\to\program.exe";
static Process ProcessObj = new Process();
static void Main(string[] args)
{
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);
startProcess();
Console.ReadKey();
}
static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
Console.WriteLine(e.Mode.ToString());
if (e.Mode == PowerModes.Suspend)
{
ProcessObj.Kill();
}
if (e.Mode == PowerModes.Resume)
{
startProcess();
}
}
static void startProcess()
{
// Create a new process object
try
{
// StartInfo contains the startup information of the new process
ProcessObj.StartInfo.FileName = ApplicationPath;
// These two optional flags ensure that no DOS window appears
ProcessObj.StartInfo.UseShellExecute = false;
ProcessObj.StartInfo.CreateNoWindow = true;
// This ensures that you get the output from the DOS application
ProcessObj.StartInfo.RedirectStandardOutput = true;
// Start the process
ProcessObj.Start();
// Wait that the process exits
ProcessObj.WaitForExit();
// Now read the output of the DOS application
string Result = ProcessObj.StandardOutput.ReadToEnd();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
Main()
? - person STLDev   schedule 14.06.2018