.Net Framework 1.1 e multithreading

mercoledì 19 dicembre 2007 - 14.29

softwork Profilo | Newbie

Framework .Net 1.1 applicazione multithreading.
Ho un'applicazione con due thread che girano in due while e due procedure thread distinte.
Ognuna delle due procedure è racchiusa in try {} catch{} ed è qui che viene intercettato l'errore.
Questi due thread vanno avanti per 4-5 giorni (24 ore su 24) dopo di chè si fermano entrambi e vanno in stato stopped a causa dell'eccezzione descritta di seguito. Non si fermano nel medesimo istante. l'errore è il seguente:

L'elemento è già stato aggiunto. Chiave nel dizionario: "-1". Chiave aggiunta: "-1"
Si fermano perchè è avvenuta appunto questa eccezzione.

Che cosa significa?
non so nemmeno da che cosa derivi questo errore, sembra non avere a che fare con i thread.

Nei due thread che girano io butto periodicamente un log su disco e poi accedo a dei dispositivi tramite libreria per .Net 1.1 Tuttavia queste chiamate sono all'interno di altre try {} catch{} che non vengono attivate. Quindi il problema non sta su queste chiamate.
C'è un variabile (un classe) condivisa gestita con un mutex tra i idue thread.
Qualcuno sa darnmi una dritta?
grazie mille a chiunque mi dia informazioni
ciao

MarKonE Profilo | Guru

Ciao, non credo che ti saprò essere d'aiuto personalmente ma sicuramente sarebbe utile vedere il codice incriminato.

Puoi postarne almeno la parte principale ?

Ciao!
My Blog... http://blogs.dotnethell.it/Mark/

softwork Profilo | Newbie

ciao,
grazie per la risposta.
Ti inserisco tutto il sorgente in vs2003.
Purtroppo, questo sorgente dialoga con dei dispositivi e quindi quelli parti le dovrò commentare. Resteranno i due thread che dovrebbero dare l'errore però il programma gira senza problemi per 4-5 giorni. Quello che vorrei capire e che significa quell'errore che apparentemente non ha nulla a che vedere con quello che faccio nel programma.
Funzionamento:
l'auto arriva in posizione sensore, la scheda di IO che ho disabilitato la rileva (ThreadIOProc), segnala al thread lettore di badge tramite la SetAutoPresente() che l'auto è presente.
Il lettore di badge (ThreadReaderProc) inzia la lattura che ho simulato : ritorna sempre 1.
Poi setta badgeOk() e AutoNonPresente().
Tutto questo va ma per un pò poi si blocca.
Nell'immediato farò in modo che il PC si riavvii ogni notte. Datao che ci sono ti chiedo anche se hai un software che permette la chiusura di un programma a tempo in modo da riavvire solo questo software ogni tot tempo
Grazie per la disponibilità
Ti allego sorgente che simula
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5