Console.WriteLine() 不会向屏幕输出任何内容,而处理程序 SystemEvents_SessionSwitch() 在阻塞计算机中被调用。但是如果在 Main() 方法中至少调用一次方法 Console.WriteLine(),那么处理程序中的方法将起作用。这种奇怪行为/错误的原因是什么?
我使用的是 Windows 8 64 位,.NET Framework 4.0
using System;
using Microsoft.Win32;
namespace TestWindowsEvents
{
class Program
{
static void Main(string[] args)
{
SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
//Console.WriteLine("Test"); //if uncomment this line, then Console.WriteLine() in SystemEvents_SessionSwitch() will work
Console.ReadKey();
}
static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
Console.WriteLine("SessionSwitch"); //this does not working
System.Diagnostics.Debug.WriteLine("SessionSwitchDebug"); //and this does not working too..
}
}
}
更新: 处理程序本身 SystemEvents_SessionSwitch () 被调用。我通过放置断点专门检查了这一点。并在锁定计算机断点后激活。但是 Console.WriteLine() 不会向控制台输出任何文本...