Console.WriteLine()은 차단 컴퓨터에서 SystemEvents_SessionSwitch() 처리기가 호출되는 동안 아무 것도 출력하지 않습니다. 그러나 Main() 메서드에서 Console.WriteLine() 메서드를 한 번 이상 호출하면 처리기의 메서드가 작동합니다. 이 이상한 행동/버그의 이유는 무엇입니까? 나는 윈도우 8 64 비트를 사용하고이상한 동작 SystemEvents를 사용하는 Console.WriteLine()
, .NET 프레임 워크 업데이트 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()은 콘솔에 텍스트를 출력하지 않습니다 ...
대단히 감사합니다! 실제로 작동한다! 그러나 이상한 점은 실제로 4.5 버전이 아니라 네 번째 버전을 사용한다는 것입니다. 방금 프로젝트 속성으로 이동하여 다시 확인했습니다. –
4.5가 설치된 경우 "앞 버전"을 사용할 수 없습니다. 4.5가 4.0을 덮어 씁니다. 프로젝트에서 4.0을 타겟팅하면 실수로 4.5 –
에서 사용할 수없는 클래스를 사용하지 않게됩니다. 감사합니다. 나는 그것에 대해 모른다. –