Form 1 Crasher.

Tags:    c++

Hey igen guys!! :)

Sidder og skriver et lille program her, og det skal fungere sådan her.

Når man trykker på 'Install' knappen skal den køre dette

Fold kodeboks ind/udKode 


Og dette virker helt fint. :)
Men tror det er i min Launch method den fejler og crasher!

Fold kodeboks ind/udKode 


Jeg har min Form1, hvorfra jeg trykker på Install knappen ( ZZipBTN ), og når programmet for ZZipBTN starter, så crasher Form1, nu ved jeg godt jeg har 'p.WaitForExit();' kørende, men havde en kammerat der prøvede at lave noget der lignede et loop, det er jeg ikke helt sikker på. Men hvis nogle af jer har idéer, så hold jeg ikke tilbage med at hjælpe! :)



Du kan jo step i debuggeren indtil den crasher og så ved du hvor det er.



Der kan jeg konkludere det kommer ved 'p.WaitForExit();', ville prøve at sætte et 'While' loop op, men er ikke så erfaren ved det, så det prøver jeg lige nu. Men har i nogen idé til hvordan det kan sættes op, så Form1 ikke blev stoppet imens jeg kører det? :)

Og det skal forresten lige siges, at når jeg har lukket det program der skal installere igen, og 'p.WaitForExit();' er kørt færdigt, så stopper fejlen igen. :)



Indlæg senest redigeret d. 29.07.2009 18:21 af Bruger #15041
Hvorfor vil du sætte et loop op ved waitForExit? Du skal jo kun vente en gang. Og først skal det da lige løses hvorfor den crasher. Og hvad mener du med at når du stopper det program der skal installeres så stopper fejlen. På det tidspunkt er programmet da crashet?



Indlæg senest redigeret d. 29.07.2009 18:36 af Bruger #14645
Bær over med mine måske lidt underlige metoder, men har kun siddet med dette kodning ganske kort tid, så logikken skal selvfølgelig også lige med mig . :)

Men ville erstatte det med WaitForExit, og så have et loop der kørt og tjekkede Processen om den kørte, og hvis den ikke gjorde kunne den gå tilbage. :) Og det mit program gør, er at det kalder et andet program, den starter en helt anden ekstern process. :) Så den process kan sagtens køre uafhængigt af det program som starter den. Derfor crasher det ikke. :)



Okay jeg prøver lige at klargøre hvordan jeg havde forstået det.

Dit eget program, her kaldet "Program A",
Installation som bliver staret af A, er processen kaldet "Installation B".

I program A starter du processen ved klik på knappen. Når den når ned til WaitForExit crasher program A. Den har nået at starte installation B, som kører i en separat proces. Og her er det jeg ikke forstår: Når B lukkes eller afsluttes stopper A med at crashe? Hvordan kan et crashet program stoppe med at crashe, det kører jo ikke længere.?





Indlæg senest redigeret d. 29.07.2009 18:46 af Bruger #14645
Okay, måske har jeg været for hurtig med at sige det crasher ( Rookie mistake i guess ), Program A fryser må jeg hellere sige, undskyld forvirringen!



Okay nu jeg med.. Ja der er noget af en forskel, på at noget crasher, og at det fryser/hænger.

Forklaringen er faktisk meget simpel. Din kode kører ikke videre før installation afslutter. Dette er fordi hele dit originale program kører i en tråd. Fordi den venter afslutter din funktion ikke (den der starter når du klikker) og derfor får brugerfladen ikke noget tid. Det du ønsker er at starte alt den kode som starter processen, venter på den afslutter, og hvad der så mere sker i en separat tråd. Dette kan jeg desværre ikke være særlig behjælpelig med, men der er sikkert en anden herinde som kan hjælpe dig. Det kan også gøres i en form for loop, men det er jeg heller ikke lige sikker på hvordan skal laves. Har ikke arbejdet med imperative programmerings sprog i lang tid.



Indlæg senest redigeret d. 29.07.2009 18:57 af Bruger #14645
Helt iorden!! Men rigtige mange tak for du forsøger at hjælpe, håber på der kommer noget hjælp forbi ihvertfald. ^^,



t