Je développe pour un serveur 2003 avec C# et .NET Framework 2.0GDI + fenêtre empêchant l'arrêt
Tant que le programme fonctionne, je ne peux pas arrêter ma machine. Rien ne se passe, mais quand alt + tabulation je peux voir une fenêtre appelée "GDI + Window". Dès que je ferme mon programme, je peux éteindre l'ordinateur correctement.
Cependant, sur mes autres ordinateurs (Windows XP Professionnel, Windows 8, Windows 8.1), cela n'arrive pas. Le programme extrait les données d'une base de données et les envoie à Internet, j'ai donc un Thread fonctionnant en arrière-plan. Cela pourrait-il être un problème?
Le code dans la classe principale est la suivante:
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();*/
}
}
Bien sûr, il existe d'autres méthodes et gestionnaires d'événements sous la forme, mais ils ne sont pas pertinents, car ils ne sont pas appelés, lors de la reproduction de ce problème . Comme vous pouvez le voir, j'ai commenté tout mon code à l'exception de InitializeComponents(), mais le problème se produit tout de même.
étapes de la reproduction:
1. Ouvrez le programme
2. Arrêtez le serveur
3. Rien ne se passe, à l'exception de la nouvelle « GDI + fenêtre » dans le alt + liste onglet, qui ne peut être ouvert
http://support.microsoft.com/kb/943453 –
Je suggère reconsidérant si vous devez afficher une interface utilisateur pour un programme qui s'exécute en arrière-plan et extrait des informations d'une base de données et les envoie à Internet. Si vous ne créez aucun type d'interface utilisateur, vous n'initialiserez pas GDI +, et cette fenêtre ne sera pas créée. –
J'ai pensé à l'interface utilisateur, mais c'est important, car je dois changer certaines données fréquemment, ce qui est tellement plus pratique et je peux afficher des informations structurées. J'ai inséré l'exemple de code de votre lien, mais j'ai une exception TypeLoadException. Informations complémentaires: Le type "MyProject.Form1" de l'assembly "MyProject, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = null" n'a pas pu être chargé car la méthode "SetForegroundWindow" n'a pas d'implémentation (pas de RVA) . (librement traduit par moi) – HigHendHd