Avatar billede iceyblue Nybegynder
05. februar 2005 - 00:29 Der er 6 kommentarer

Exceptoin i Unmanged kode

Hejsa....

Har jeg en winform, så benytter nogle systemklasse fra microsoft, til komm. med com-porten...det virker fint, når man benytter "normale" com-porte....men pga. vi bliver nød til at USB-Comport adaptere...på nogle små computere, således at vi kan få flere tilgængelige comport....ja så microsofts kode...:(

Det er godt nok noget værre bras at benytte de der adaptere har jeg senere fundet ud af, pga. de er meget ustablie og faktisk kun kan bruger til at modtage data med....

Fejlen er periodisk, men fatal for programmet!! Nogle gange, lukker den blot hele programmet ned UDEN nogen form for advarsel...Andre gange får jeg  via mine try/catch en lang historie om, det er opstod en fejl i noget forbindelse med com-porten...jeg kan se at fejlen må skyldes noget fejler i Microsofts's dll....idet nogle af ordene i fejlen er :

Object ref. not set to an instance og an object...

1. ...Thread.Context.OnThreadException...
2. ...Control.WndProcException...
3. ...ControlNativeWindow....
4. ...NativeWindow.CallBack....
5. ...UnSafeNativeMethods.DispatchMessage
6. ...ComponentManager...
7. ...ThreadContent.RunMessageLoop...
8. ...Application.RunDialog(Form...)...

Nogle gange siger den noget med : Memory kunne ikke blive "written"...

Fejlene kommer dog KUN når jeg benytter de dumme adaptere, aj hvorfor lader jeg så ikke dem værre...pga. der allerede er kunder som benytter dem :)

Mit spg. er selvfølgelig, har jeg nogen mulighed, for at undgå at programmet lukker ned...idet jeg teste programmet, er alle metoder indkapslet i try/catch...Men unsat om fejlen bliver fanget, ja så lukke rprogrammet bare ned eller fryser....??

Håber meget i kan hjælpe mig...

Mvh. PabloPablo
Avatar billede lifo Nybegynder
05. februar 2005 - 09:47 #1
fanger du også ThreadException ?
dvs. alle exceptions som ikke bliver fanget andre steder

om ikke så allerførst i din kode skriv
Application.ThreadException+=new ThreadExceptionEventHandler(Application_ThreadException);

private void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
//lav et eller andet her
}
Avatar billede iceyblue Nybegynder
07. februar 2005 - 11:11 #2
hvad mener du med, at exceptions som ikke bliver fanget andre steder??
Hvis man fx. disposer com-port objektet, så bliver der fx. smidt en exception...

Din kode vil fange tråd-exceptoins, men hvordan skal jeg gøre således at programmet ikke blot lukker ned...?
Avatar billede iceyblue Nybegynder
07. februar 2005 - 18:41 #3
ThreadException findes ikke...?-(
Avatar billede iceyblue Nybegynder
07. februar 2005 - 18:58 #4
hmm...det er underligt, når jeg køre programmet igennem Visual Studio lukker det ikke programmet ned, det kommer højst med en fejlmeddelse...men når jeg ikke kører det igennem Visual Studio såm fryster programmet efter jeg har prøvet at åbne/lukke(dispose) com-port objektet 3 gange...??
Avatar billede iceyblue Nybegynder
07. februar 2005 - 18:59 #5
Avatar billede lifo Nybegynder
08. februar 2005 - 10:28 #6
>hvad mener du med, at exceptions som ikke bliver fanget andre steder??
>Hvis man fx. disposer com-port objektet, så bliver der fx. smidt en exception...

det fungerer som en global try catch
om der sker en exception i en kode der ikke er i en try catch blok så kommer der en standard besked box op og siger at der er sket en unhandled exception og programmet går nok ned
med Application.ThreadException kan du fange de exceptions og vise en besked eller lave et eller andet som du har lyst til

>ThreadException findes ikke...?-(
System.Windows.Forms.Application.ThreadException+= ....
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