C# 및 .NET Framework 2.0을 사용하는 Server 2003 용으로 개발 중임GDI + 종료를 막는 창
프로그램이 실행되는 동안 컴퓨터를 종료 할 수 없습니다. 아무 일도 일어나지 않지만 alt + tabbing을하면 "GDI + Window"라는 창이 보입니다. 프로그램을 종료하자마자 컴퓨터를 올바르게 종료 할 수 있습니다.
그러나 다른 컴퓨터 (Windows XP Professional, Windows 8, Windows 8.1)에서는 발생하지 않습니다.
프로그램은 데이터베이스에서 데이터를 가져 와서 인터넷으로 전송하므로 백그라운드에서 실행중인 스레드가 있습니다. 그게 문제가 될 수 있습니까? 물론
public partial class Form1 : Form
{
bool run = true;
//AutoStart autoS = new AutoStart();
int interval;
//LogFileBuilder lfboom = new LogFileBuilder(true);*/
public Form1()
{
InitializeComponent();
/*OpenOnce();
//autoS.EintragHinzufügen();
WriteMe();
LogFileBuilder lfb = new LogFileBuilder();
lfb.writeLine("Programm gestartet");
new Thread(Durchführung).Start();*/
}
}
이 형태의 다른 방법과 이벤트 핸들러는하지만, 호출되지 않기 때문에 그들은 관련이없는 때이 문제를 재현 :
메인 클래스의 코드는이 다음이다 . 보시다시피 InitializeComponents()를 제외하고 내 전체 코드를 주석 처리했지만 여전히 문제가 발생합니다. 재생을위한
단계 :
1. 프로그램 개방하지
2. 종료
3. 아무것도 알트 + 탭 목록에 새로운 "GDI + 창"을 제외하고 발생하지 않는 서버,
http://support.microsoft.com/kb/943453 –
실행됩니다
라고 그래서
다음 코드를 정리해하기 백그라운드에서 실행되고 데이터베이스에서 정보를 가져 와서 인터넷에 보내는 프로그램을위한 UI입니다. 어떤 종류의 UI도 만들지 않으면 GDI +를 초기화하지 않고이 창을 만들지 않습니다. –UI에 대해 생각해 보았습니다. 그러나 데이터를 자주 변경해야하므로 매우 편리합니다. 정보를 구조화하여 표시 할 수 있기 때문에 중요합니다. 귀하의 링크에서 예제 코드를 삽입했지만 TypeLoadException이 발생합니다. 추가 정보 : "SetForegroundWindow"메서드에 구현 (RVA 없음)이 없으므로 어셈블리 "MyProject, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null"에서 "MyProject.Form1"유형을로드 할 수 없습니다. . (자유롭게 번역했습니다) – HigHendHd