Scrittura e successiva lettura di un file di testo.

lunedì 03 settembre 2012 - 12.41

mauro1068 Profilo | Newbie

Buongiorno a tutti.

Questo è il mio primo post su questo forum, e (sono sincero) ho un problema per il quale NON ho letto eventuali messaggi precedenti (in genere sono un buon lettore di forum, ma stavolta non ho ancora avuto tempo), per cui perdonate la domanda eventualmente ripetuta e, se il caso, indirizzatemi ad una soluzione...

Premesso che:
- sono un neofita di c# e .net, ma non di programmazione
- uso visual studio 2008
- uso la libreria OpenPOP per ricevere i messaggi

sto scrivendo un piccolo programma che scarica una email da un account gmail, salva l'allegato presente (file di testo), e lo elabora.

la funzione che salva il file e poi lo elabora contiene il seguente codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ecco il problema:

il file viene salvato, ma l'elaborazione successiva mi genera una eccezione. Mi è venuto in mente che il problema potrebbe risiedere nel fatto che il file appena salvato risulta ancora aperto alla successiva immediata rilettura.
Se infatti lo stesso codice che genera l'eccezione lo chiamo al click di un pulsante, subito dopo averlo scaricato, tutto funziona correttamente.

Il mio problema è che non riesco a trovare il modo di "chiudere" il file appena scritto.

Quindi la domanda?

è corretto il mio dubbio?
Se si, come si chiude il file appena salvato?

grazie a tutti

Mauro

Davide1986 Profilo | Junior Member

Prova a far passare un po di secondi prima che avvi il processo ex:

using System.Threading; int waitTime = 1000; Thread.Sleep(waitTime);

e vedi cosa succede.

Prova a vedere se questo sito ti può aiutare http://www.limilabs.com/blog/download-email-attachments-net

Saluti Davide.

mauro1068 Profilo | Newbie

Ciao Davide, e grazie del suggerimento.

Pochi minuti fa ho avuto modo di fare di nuovo un po' di debug, e mi sono accorto che l'eccezione era in realtà generata da un errore "laterale" (chiamata ad una funzione con un argomento null). Quindi il codice era concettualmente corretto.

Rimane la mia curiosità "tecnica" (ho già detto che sono un neofita del linguaggio e dell'ambiente di sviluppo ;-)):

dall'help vedo che la scrittura di un file di testo tramite il meccanismo di streaming prevede delle istruzioni di flush e di close del flusso, ma non trovo analogo nel meccanismo che usa la struttura FileInfo (come nel mio esempio) per salvare su file l'allegato del messaggio. In questo caso il flusso viene chiuso in automatico (cioè il metodo save è "completo")?

grazie comunque delle indicazioni.

Mauro
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5