Hej alla! Ifall dina trådar inte är bakgrundstrådar (Thread.IsBackground) så väntar programmet med att stänga sej tills dom dör.. Tack så mycket, det funkade utmärkt när jag ändrat trådarna till isBackgroundProgramet vägrar stängas ordentligt.
Det här är säkert ett väldigt dumt problem med enkel lösning, men jag kan inte hitta vad jag gör för fel. Programmet i fråga är ett relativt resurssnålt program, vanligtvis så handlar det om kanske 1-2 % av ena processorn som används, men när det ska stängas så ligger det på, enligt task managern, 90-99% och inget händer.
Programmet startas i sub Main med raden Application.run(new Form1())
När det sen ska stängas så har jag en knapp som exekverar koden:
Me.Close()
Application.Exit()
Detta borde, enligt MSDN, räcka tycker jag, men ett par trådar vill inte stängas. När jag då lägger in följande rader innan me.close()
Me.timeTh.Suspend()
Me.pth.Suspend()
blir resultatet att processen tar upp åtminstone 50%, vilket innebär 100% av en kärna, och ofta uppemot 99%, dvs all processorkraft datorn har.
Det jag kan komma på är nån form av evigt deadlock, men eftersom den tydligen inte ville stänga ner trådarna i Application.run() så verkar det konstigt.
Nån som kan hjälpa mig med det?
//JanneSv: Programet vägrar stängas ordentligt.
Så titta på att stänga ner dina trådar innan huvudprogrammet (Suspend bara pausar dom), alternativt sätta dom som bakgrundstrådar.
En fullösning är att använda sej av Thread.Abort() men detta rekommenderas inte pga alla bieffekter asynkrona exceptions har..Sv:Programet vägrar stängas ordentligt.
//Janne