//start button2.Visible = true; start_but.Visible = false; com.ReadOptions(); com.openport(); access.ReadOptions(); access.opencon(); exit_loop = 0; do { PA1 = com.readstring(); //Readstring med den while som skal stoppes starters her access.makestring(PA1); access.DBcomand(); Application.DoEvents(); } while (exit_loop == 0); }
Jeg tror faktisk det bliver svært for dig, at komme til at trykke på button2, da du blokerer hele gui-tråden med dine while-løkker.
At du kalder Application.DoEvents() er en grim nødløsning, og selv hvis det kommer til at virke, vil det ikke blive en stabil løsning.
Dine while-løkker skal køre i en anden tråd (eller du kan alternativt bruge events fra din com-port). Men prøv at google på BackgroundWorker, og se hvordan du kan få noget til at køre i baggrunden, og alligevel være cancelable.
Sådan her laver man baggrundstråde i ASP.NET: - Tråden er statisk så alle der besøger siden kan se den - Du snakker med tråden via en statisk struct/class/instans - Du henter information ud på frontend med java script: page.aspx?GetWorkerStatus=1 - for at stoppe en tråd som løber løbsk, brug IISRESET - hver gang du compiler bliver tråden også resettet hvis du debugger på IIS eller Studio serveren.
-----------------------------
//din baggrundstråd static Thread BGWorker; static bool isRunning = false; static struct ThreadInfo { string Information; //brug denne variabel til at snakke med tråden int tal; //brug dette tal til at snakke med tråden }
Det er sådan set underordnet... du kan stadig bruge Tråd-programmering til at gøre din app bedre og sørge for at den ikke låser GUI...
Synes godt om
Ny brugerNybegynder
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.