Problema Con CLOSEHANDLE

giovedì 15 dicembre 2005 - 15.56

nicolacicco Profilo | Newbie

Salve in un'applicazione per pocket pc gestico la porta bluetooth tramite
delle API.
Richiamo inizialmente
infile = CreateFile("COM" & inport & ":", &HC0000000, 0, 0, 3, 0, 0)
e poi faccio ciclare per quattro volte la funzione ReadFile.Dopo inizia
l'elaborazione dei dati che ricevo la quale puo richiedere anche del tempo,e
fin qui tutto ok.Il problema che riscontro è che dopo un po quando vado a
richiamare le ReadFile ,per la ricezione di nuovi dati,il buffer di
ricezione non contiene nulla.Mi accorgo di questo tramite un controllo e
quando ciò accade faccio terminare il processo e dopo richiamo la

CloseHandle(infile)

Il problema è che il programma eseguito il CloseHandle si pianta,quando
invece dovrebbe richiamare nuovamente la CreateFile.

Qualcuno può aiutarmi?



Brainkiller Profilo | Guru

>CloseHandle(infile)
>Il problema è che il programma eseguito il CloseHandle si pianta,quando
>invece dovrebbe richiamare nuovamente la CreateFile.

Mi risulta che se tu fai una ReadFile ma i dati non ci sono il programma va in blocking. Se invece usi ricezioni asincrone non dorebbe succedere. Forse è per questo. Un po' come il socket sincrono.
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

nicolacicco Profilo | Newbie

Grazie,
in effetti potrebbe essere una soluzione.
Leggendo sul sito msdn.microsoft mi basterebbe impostare nel penultimo campo della CREATEFILE il flag FILE_FLAG_OVERLAPPED per ottenere una lettura asincrona.
Ma c'è un piccolo problema,il flag non è supportato nel Windows CE

Al massimo potrei impostare il flag FILE_FLAG_RANDOM_ACCESS.Può essere lo stesso utile?

Grazie di tutto NICOLA



niky

Brainkiller Profilo | Guru

>Al massimo potrei impostare il flag FILE_FLAG_RANDOM_ACCESS.Può
> essere lo stesso utile?

Non conosco purtroppo, fai affidamento alla documentazione.
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5