» »

C#, FileSystemWatcher in branje datotek

C#, FileSystemWatcher in branje datotek

Ziga Dolhar ::

V VS.net 2005 beta 2 poskusno pišem neko malo aplikacijo, ki ob vsaki spremembi datoteke X to datoteko odpre, z njo nekaj stori in jo zapiše nazaj pod drugim imenom. Moje trenutno znanje C#-a je zaenkrat precej šibko, tako da prosim za potrpežljive odgovore ;).

Uporabljam FileSystemWatcher, ki ima kot NotifyFilter nastavljen "LastWrite".

Vendar pa pride pri uporabi različnih programov za urejanje besedilnih datotek do težav. Če namreč odprem filet v Notepadu in ga shranim, potem v prvo [ponavadi, ne pa vedno] "dela" [datoteka se uspešno odpre, obdela, shrani]. Ko pa sprožim fsWatcher_Changed() drugič [v teku delovanja programa], se stvar sesuje:

{"The process cannot access the file 'D:\\development\\web\\projekti\\billing\\@tmpl\\ref\\style.css' because it is being used by another process."}

Konkretno sem uspel ugotovit, da Notepad menda ob shranjevanju sproži kar dva eventa, in medtem ko se prvo procesiranje datoteke še ni uspelo zaključit, se prične izvajat že drugo, ki pa ne dobi dostopa do datoteke.

Nato sem eventu določil še, naj pred pričetkom in po končanem procesiranju malo "počaka":

        private void fsWatcher_Changed(object sender, System.IO.FileSystemEventArgs e)
        {
            //System.Threading.Thread.Sleep(500);
            bool result = process();
            //System.Threading.Thread.Sleep(500);
        }


Že z manjšo številko (npr. 10 ms) se uspem v večini primerov izognit težavi, a še vedno, če ZELO ZELO hitro spreminjatm datoteko in jo shranjujem, uspem program sesut. Tudi s številko 500 se včasih še sesuje, poleg tega pa program rata grozljivo u-počasnjen.

Kako bi to lahko lepše in predvsem boljše rešil?

--

Druga težava je, da če datoteko odprem v Dreamweaverju in jo shranim, do eventa _sploh ne pride_. WTF? :)


Hvala za pomoč.
https://dolhar.si/

Microsoft ::

Ce se nisi nasel in ce ti kaj pomaga: msdn.


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

VB.net Excel v Tif

Oddelek: Programiranje
121144 (1043) saule
»

Spremljanje dogajanja na ekranu

Oddelek: Programiranje
81258 (1117) boss-tech
»

pošiljanje SMS C#

Oddelek: Programiranje
133122 (2615) Neon87
»

[VB] Komunikacija s serijskimi napravami

Oddelek: Programiranje
412299 (1573) mNeRo
»

Visual basic in pavza

Oddelek: Programiranje
5820 (774) Fim

Več podobnih tem