Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako pristupiti fajlu koji je u fazi kreiranja?

[es] :: .NET :: Kako pristupiti fajlu koji je u fazi kreiranja?

[ Pregleda: 2068 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Oliver Klaćik
Vice President, Thunder Road Software
Inc.
Stara Pazova

Član broj: 34059
Poruke: 242
80.93.231.*

Sajt: www.thunderroadsoftware.c..


Profil

icon Kako pristupiti fajlu koji je u fazi kreiranja?09.02.2006. u 17:27 - pre 221 meseci
Imam Windows Service koji nadgleda neki folder i kada se pojavi odgovarajući fajl treba da ga prebaci (Move) na drugu lokaciju. E, sad, FileSystemWatcher diže Created event, kada fajl počne da se kreira i naredba Move u tom trenutku izaziva Exception, a baš taj eception pada u jednu širu grupu IOExcetion klase, što znači da ne mogu uvek biti siguran da sam baš taj exception uhvatio. Evo kako sam rešio problem:

Code:

Dim Success As Boolean

        ' While Success flag is false...
        While Success = False

            ' Try..Catch block that catches possible IOExceptions including 'The process cannot access the file...'
            Try
                ' Hope for the best...
                Success = True

                ' ...and try to move the file
                File.Move(sourcePath, destPath)

                ' Catch IO type of exception
            Catch ex As IOException

                If ex.Message.StartsWith("The process cannot access the file") = False Then
                    ' TODO: Write log and trace entries
                Else
                    ' If this is 'expected kind of exception' set flag to false to continue the loop
                    Success = False
                End If
                ' Catch some general exceptions
            Catch ex As Exception
                ' TODO: Write log and trace entries
            End Try
        End While


Ovo radi, ali mi se jednostavno ne sviđa. Grešku hvata preko Message property-ja, što je bezveze jer je taj property podložan lokalizaciji .Net Framework-a.

Znači, interesuje me:

1. Da li mogu na neku foru da saznam kada je file slobodan, tj. da nijedan drugi proces ne drži lock na njemu, ili jednostavno kada je proces kreiranja gotov?

2. Da li mogu da na neki bezbedniji način uhvatim 'pravi' exception. Jedino što mi ovde deluje kao mogućnost je da nasledim IOException klasu, pa da preko HResult property-ja uhvatim kod te greške. Ali to još nisam probao, tako da ne znam da li je moguće.

Ima li neko ideju?
Oliver 'FAQ' Klaćik
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako pristupiti fajlu koji je u fazi kreiranja?09.02.2006. u 20:16 - pre 221 meseci
Ja se stalno bijem sa ovim problemom posto cesto radim ovu "swivel chair" integraciju izmedju dva legacy sistema.

Ono sto mi radimo je inicijalizacija novog thread-a kome se prosledi file name. Thread saceka XX sekundi (nase pravilo je 3 x prosecno vreme kreirnja fajla, min 20 sek) i onda uradi move.
Problem je sto filewatcher ne salje Close event , a i da salje, mi imamo pacijente koji rade jedan create pa 1000 appendova za svaki red flat file-a, pa nam ni to ne vredi

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Oliver Klaćik
Vice President, Thunder Road Software
Inc.
Stara Pazova

Član broj: 34059
Poruke: 242
80.93.231.*

Sajt: www.thunderroadsoftware.c..


Profil

icon Re: Kako pristupiti fajlu koji je u fazi kreiranja?09.02.2006. u 23:45 - pre 221 meseci
Dobio sam funkcionalno ali i komplikovano rešenje na drugom forumu (da, znam, baš sam izdajnik ), pa ako nekoga interesuje evo link:
http://forums.microsoft.com/MS...spx?PostID=240640&SiteID=1

Inače, ovo je definitivno jedan od propusta Microsoft-a u dizajnu base klasa .Net Framework-a.
Oliver 'FAQ' Klaćik
 
Odgovor na temu

[es] :: .NET :: Kako pristupiti fajlu koji je u fazi kreiranja?

[ Pregleda: 2068 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.