Avatar billede blod_1 Nybegynder
19. december 2009 - 18:10 Der er 14 kommentarer

Korrekt lukning af webserver

Jeg har fundet et eksempel på en webserver via google, og været igang med at rette den til så jeg kan bruge den til det jeg har brug for.

Mit problem er nu den måde som den lukker ned på, for at lukke den helt skal jeg bruge den Exit funktion jeg har lagt under File, men der kommer den så med en fejl når jeg lukker via den. Og hvis jeg bare bruger X i hjørnet lukker formen ned, men den kører stadig i under processer.

Hvordan kan jeg få den til at lukke rigtigt ned, uden at komme med den fejl?

http://pastebin.com/m5f5a84a1
Avatar billede arne_v Ekspert
19. december 2009 - 18:22 #1
Den paene maade at lukke em multithreaded app ned paa er at faa alle traadene til at afslutte.

Den haard emaade er:

Environment.Exit(0);
Avatar billede blod_1 Nybegynder
19. december 2009 - 18:35 #2
ooh, det virkede, og det var lettere end jeg troede...

Men hvordan får man trådene til at lukke istedet så? Og hvad skal jeg kigge efter hvis jeg vil have den til at lukke ned på samme måde ved at trykke på X'et også?
Avatar billede blod_1 Nybegynder
19. december 2009 - 18:44 #3
Fandt frem til noget...

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("You are about to close the server. Are you sure you want to continue?", "K8055 Remote", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
            {
                e.Cancel = true;
                return;
            }
            Environment.Exit(0);
        }

Men kan ikke lige få det til at fungere, skal der noget mere til at få den til at aktivere?
Avatar billede arne_v Ekspert
19. december 2009 - 19:17 #4
Den paene lukning kraever at traadene tester paa et flag en gang imellem om de skal afslutte.
Avatar billede arne_v Ekspert
19. december 2009 - 19:18 #5
Hvad betyder "kan ikke lige få det til at fungere" saadan helt konkret?

Compile fejl ? Exception paa runtime ? Ingen effekt ?
Avatar billede blod_1 Nybegynder
19. december 2009 - 20:13 #6
Ingen effekt, der kommer ingen fejl.

Men for at styre når vinduet bliver minimeret, har jeg også denne på

this.Resize += new EventHandler(MainForm_Minimize);

skal vel noget lignende på når det bliver lukket, for at trigge Form1_FormClosing?
Avatar billede arne_v Ekspert
19. december 2009 - 20:19 #7
Ja !
Avatar billede blod_1 Nybegynder
19. december 2009 - 21:10 #8
Så kom minimer og maximer til at fungere, nu crasher den bare total ved denne linie

if ((numBytes = mySocket.Send(bSendData, bSendData.Length, 0)) == -1)

Med denne fejl http://peecee.dk/uploads/122009/Unavngivet8.png

Samtidig med at denne også kommer engang imellem http://pastebin.com/m20c1a386

Ved dog ikke helt hvad det er, er det fordi der er for mange tråde åbnet?
Avatar billede arne_v Ekspert
19. december 2009 - 21:26 #9
Den første siger bare at connection blev nedlukket i utide.

Den anden ligger et eller andet sted mellem win forms og noget native kode.
Avatar billede blod_1 Nybegynder
19. december 2009 - 22:04 #10
Hvad kan man gøre ved det? Har sat try og catch ind de forskellige steder for at finde ud af hvad der går galt, men de fleste af gangene crasher den bare uden at skrive noget som helst, og så engang imellem kommer de fejl.

Med dem på, burde den så ikke også give mig en fejl istedet for bare total at holde op med at svare?

Og det samme sker stort set hver gang. 16 gange svarer den, 17. gang crasher det total.
Avatar billede arne_v Ekspert
20. december 2009 - 02:24 #11
Kan du forkorte programmet ned til et simpelt program som kan genskabe fejlen.
Avatar billede arne_v Ekspert
20. december 2009 - 02:25 #12
Og det var et spørgsmål.
Avatar billede blod_1 Nybegynder
24. december 2009 - 03:13 #13
Har ikke glemt denne tråd endniu, men jeg er igang med at forsøge at korte den ned, jeg skal faktisk slet ikke bruge det med at den kan læse filer, jeg skal kun bruge sådan så jeg nemt kan få den til at returnere om det den blev bedt om lykkedes, eller ej.

Det går dog ikke så godt med at få alt det fjernet som ikke skal bruges.
Avatar billede blod_1 Nybegynder
28. december 2009 - 04:07 #14
Har fået den til at lade være, det næste er så bare at få den til at lukke den når jeg beder den om det.

Efter noget googlen rundt, så er den eneste løsning jeg har fundet, at genstarte programmet... Er der virkeligt ikke en måde at lukke den på, uden at skulle lukke hele programmet?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester