Orario: 24-05-2013, 13:54 Benvenuto ospite! (Log inRegistrati)


Rispondi 
Sharing di utilità
Autore Messaggio
Corralx
Graph Lover

Messaggi: 810
Registrato: Jul 2010
Offline Offline
#46 RE: Sharing di utilità
0
(04-01-2011 19:00)morgoth90 ha scritto:  dovrebbe scrivere comunque, a meno che c# usi una qualche cache intermedia il sistema operativo quando gli dici di scrivere lo fa senza aspettare la chiusura

In C# il file viene scritto al File.Close()
Se non chiudi il file non viene scritto niente. Fifi

Matteo "Corralx" Bertello
04-01-2011 19:09
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
skybox
Member

Messaggi: 167
Registrato: Aug 2009
Offline Offline
#47 RE: Sharing di utilità
0
Esatto infatti era più corretto quello della prima versione ma, concordo con il fatto che prestazionalmente parlando, aprire sempre il file è una scocciatura, una via di mezzo potrebbe essere per esempio scrivere il log ogni 20 o 30 righe di log accumulate, cosi almeno non perdiamo tutto se crasha..

[Immagine: tteam.jpg]
M.Pratesi (skybox@interfree.it)
04-01-2011 23:25
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Smjert
Senior Member

Messaggi: 424
Registrato: Sep 2009
Offline Offline
#48 RE: Sharing di utilità
0
Ma scusate.... se il try/catch c'è... perchè banalmente non mettere il File.Close() anche nel catch?
E comunque esiste Flush per far scrivere tutto quello che c'è in cache su disco.

Stefano Bonicatti.
05-01-2011 0:49
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Corralx
Graph Lover

Messaggi: 810
Registrato: Jul 2010
Offline Offline
#49 RE: Sharing di utilità
0
(05-01-2011 0:49)Smjert ha scritto:  Ma scusate.... se il try/catch c'è... perchè banalmente non mettere il File.Close() anche nel catch?
E comunque esiste Flush per far scrivere tutto quello che c'è in cache su disco.

Perchè dovresti tenere un riferimento al file dovunque ci sia una eccezzione e aggiungere ad ogni catch File.Close().
Oltretutto il problema sorge quando hai un eccezzione che non è in catch (e nei videogiochi le eccezzioni generalmente non vengono catturate quindi ce ne sono molte).

L'unica come dici potrebbe essere un Flush() nei momenti giusti o anche ogni volta che si chiama Write().
Non è efficientissimo ma sicuramente più che aprire/chiudere il file continuamente.

Matteo "Corralx" Bertello
05-01-2011 0:57
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Eclipse
npc in fps 4 food

Messaggi: 11,275
Registrato: Sep 2004
Offline Offline
#50 RE: Sharing di utilità
0
basta mettere flush dopo aver scritto e chiudere il file alla fine

Giuseppe Navarria - Moonloop
[Immagine: twittericon.png] [Immagine: linkedinicon.png] [Immagine: steamicon.png]
05-01-2011 0:59
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Smjert
Senior Member

Messaggi: 424
Registrato: Sep 2009
Offline Offline
#51 RE: Sharing di utilità
0
(05-01-2011 0:57)Corralx ha scritto:  Perchè dovresti tenere un riferimento al file dovunque ci sia una eccezzione e aggiungere ad ogni catch File.Close().
Oltretutto il problema sorge quando hai un eccezzione che non è in catch (e nei videogiochi le eccezzioni generalmente non vengono catturate quindi ce ne sono molte).

L'unica come dici potrebbe essere un Flush() nei momenti giusti o anche ogni volta che si chiama Write().
Non è efficientissimo ma sicuramente più che aprire/chiudere il file continuamente.

Beh ma se capita una eccezione si dovrebbe rilasciare tutte le risorse possibili comunque, quindi scusa, cominciamo a gestire le eccezioni possibili nella funzione Logger.
Poi basta trovare un modo per comunicare con il thread da qualunque luogo (metodo statico?) e dirgli di chiudere il file.

Se poi non è catturata, sfiga assoluta, però almeno nelle eccezioni che gestiamo mettiamolo.. no?

Stefano Bonicatti.
(Questo messaggio è stato modificato l'ultima volta il: 05-01-2011 12:46 da Smjert.)
05-01-2011 12:46
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
miniBill
Posting Freak

Messaggi: 1,700
Registrato: Nov 2008
Offline Offline
#52 RE: Sharing di utilità
0
un Close nel catch sarebbe una pessima idea, perché l'eccezione potrebbe essere che
a)il file non può essere scritto
b)il disco è pieno
c)cazzi & mazzi
nel qual caso chiamare Close invocherebbe un altra eccezione

Nōkírå Zizi
05-01-2011 13:54
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Smjert
Senior Member

Messaggi: 424
Registrato: Sep 2009
Offline Offline
#53 RE: Sharing di utilità
0
(05-01-2011 13:54)miniBill ha scritto:  un Close nel catch sarebbe una pessima idea, perché l'eccezione potrebbe essere che
a)il file non può essere scritto
b)il disco è pieno
c)cazzi & mazzi
nel qual caso chiamare Close invocherebbe un altra eccezione

D'accordo ma allora come le rilascia le risorse dell'handle che tiene aperto?

Stefano Bonicatti.
05-01-2011 14:19
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Xaldyz
Esoterico

Messaggi: 2,385
Registrato: Apr 2010
Offline Offline
#54 RE: Sharing di utilità
0
(05-01-2011 14:19)Smjert ha scritto:  
(05-01-2011 13:54)miniBill ha scritto:  un Close nel catch sarebbe una pessima idea, perché l'eccezione potrebbe essere che
a)il file non può essere scritto
b)il disco è pieno
c)cazzi & mazzi
nel qual caso chiamare Close invocherebbe un altra eccezione

D'accordo ma allora come le rilascia le risorse dell'handle che tiene aperto?

ci pensa il sistema operativo in caso di crash del programma Linguaccia
05-01-2011 14:50
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
miniBill
Posting Freak

Messaggi: 1,700
Registrato: Nov 2008
Offline Offline
#55 RE: Sharing di utilità
0
(05-01-2011 14:50)Xaldyz ha scritto:  
(05-01-2011 14:19)Smjert ha scritto:  
(05-01-2011 13:54)miniBill ha scritto:  un Close nel catch sarebbe una pessima idea, perché l'eccezione potrebbe essere che
a)il file non può essere scritto
b)il disco è pieno
c)cazzi & mazzi
nel qual caso chiamare Close invocherebbe un altra eccezione

D'accordo ma allora come le rilascia le risorse dell'handle che tiene aperto?

ci pensa il sistema operativo in caso di crash del programma Linguaccia

eeeeeeeeesatto
un sistema operativo moderno si occupa di ripulire la cragna che un programma lascia dietro di sé

il che non vuol dire che non chiudere un file sia una buona idea, anche perché il sistema operativo potrebbe giustamente incazzarsi Sisi
però, in caso di problemi [e non poter scrivere un file di log di solito *è* un problema. a meno che non ci si trovi in un filesystem readonly. ma in quel caso si può chiedere un filename in una directory temporanea/user writable] questo potrebbe, per assurdo, essere il comportamento migliore.
ora, Close implica Flush e, in caso di problemi, potrei voler fare flush.
solo prima di farlo dovrei capire che tipo di problema c'è.
in caso di out of memory exception, stack overflow, o altre disgrazie del genere, tentare un flush è abbastanza controproducente, perché è probabile che sia già troppo tardi.
detto questo, non saprei come trovare una Soluzione Smile

Nōkírå Zizi
07-01-2011 22:35
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Xaldyz
Esoterico

Messaggi: 2,385
Registrato: Apr 2010
Offline Offline
#56 RE: Sharing di utilità
0
(07-01-2011 22:35)miniBill ha scritto:  
(05-01-2011 14:50)Xaldyz ha scritto:  
(05-01-2011 14:19)Smjert ha scritto:  
(05-01-2011 13:54)miniBill ha scritto:  un Close nel catch sarebbe una pessima idea, perché l'eccezione potrebbe essere che
a)il file non può essere scritto
b)il disco è pieno
c)cazzi & mazzi
nel qual caso chiamare Close invocherebbe un altra eccezione

D'accordo ma allora come le rilascia le risorse dell'handle che tiene aperto?

ci pensa il sistema operativo in caso di crash del programma Linguaccia

eeeeeeeeesatto

grazie tesoro Asd

(07-01-2011 22:35)miniBill ha scritto:  Close implica Flush

ahem, in Java questo a me non funzionava Selo dovevo chiamare manualmente il flush
07-01-2011 23:27
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
miniBill
Posting Freak

Messaggi: 1,700
Registrato: Nov 2008
Offline Offline
#57 RE: Sharing di utilità
0
(07-01-2011 23:27)Xaldyz ha scritto:  ahem, in Java questo a me non funzionava Selo dovevo chiamare manualmente il flush

o_O

Nōkírå Zizi
08-01-2011 11:57
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
mude
Arrested Development

Messaggi: 7,027
Registrato: Nov 2008
Offline Offline
#58 RE: Sharing di utilità
0
(08-01-2011 11:57)miniBill ha scritto:  
(07-01-2011 23:27)Xaldyz ha scritto:  ahem, in Java questo a me non funzionava Selo dovevo chiamare manualmente il flush

o_O

su unix close() non chiama anche fflush() ma lo fa fclose() Zizi

.: DevLog | Twitter Pinaster Games | Twitter Personale :.
[Immagine: BBh5DKU.png] Beta
08-01-2011 13:37
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
skybox
Member

Messaggi: 167
Registrato: Aug 2009
Offline Offline
#59 RE: Sharing di utilità
0
Purtroppo non c'e' una regola universalmente valida, quando si genera un eccezione, spesso a me è successo che il file non venisse scritto flush o meno..

[Immagine: tteam.jpg]
M.Pratesi (skybox@interfree.it)
08-01-2011 14:11
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
mude
Arrested Development

Messaggi: 7,027
Registrato: Nov 2008
Offline Offline
#60 RE: Sharing di utilità
0
casomai qualcuno avesse bisogno di una chat in locale (:fermosiSmile o meglio di far comunicare processi tramite socket in locale su unix qui trovate della roba(download e codice) (che spero vada bene Look ma funzionava boh :sgrat sgrat: )

http://tinyurl.com/6ztl9ev

.: DevLog | Twitter Pinaster Games | Twitter Personale :.
[Immagine: BBh5DKU.png] Beta
(Questo messaggio è stato modificato l'ultima volta il: 17-01-2011 18:39 da mude.)
17-01-2011 18:39
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Rispondi 


Vai al forum: