[ Sandra_G @ 06.03.2006. 16:24 ] @
Moram da pratim promene u jednom folderu, tj. da "nadgledam" taj folder za konkretan fajl. Dakle, kada se pojavi fajl test.txt (na primer), trebalo bi da ga iskopiram, i da zavrsim celu pricu.

Probala sam sa Timer, da proverava na svakih 1000 ms (tj. da podize event, pa da u okviru eventa proverava da li postoji ta slika ili ne), ali ne umem da ga "zaustavim" kada nadje taj fajl i iskopira ga. Nastavlja da "okida"....

Mozda ima neki drugi nacin?
[ alex @ 06.03.2006. 16:35 ] @
Pogledaj FileWatcher klasu.
[ Oliver Klaćik @ 06.03.2006. 20:04 ] @
Ja sam skoro pravio neki service za monitoring foldera, pa čisto da ti skrenem pažnju... FileSystemWatcher.Created event okida u trenutku kada fajl počinje da se stvara u nadgledanom folderu... Ako je fajl malo veći, dobićeš exception kada pokušaš da mu pristupiš (radi kopiranja) jer OS još uvek drži lock nad fajlom. Inače, .Net nema nijedan 'fini' način provere da li je neki fajl pod lock-om... Pa, ako ti to bude stvaralo problem, imam neko zaobilazno rešenje koje mi je dao neki lik na MSDN forumu...
[ Bojan11 @ 06.03.2006. 21:11 ] @
Pozdrav,
ja sam bas danas radio sa Timer kontrolom. Inace koristim VB.net 2005, pa je rukovanje sa timerom jako jednostavno. Prevučeš ga na formu, podesiš interval (npr.1000ms) i postaviš gdje očeš da ti se timer uključi
Timer1.Start()
i di da prekine sa odbrojavanjem
Timer1.Stop()
i to je to.
Inače funkciju koju treba izvršiti napraviš u Event-u tick...
[ dusans @ 06.03.2006. 21:12 ] @
Citat:
Sandra_G: Probala sam sa Timer, da proverava na svakih 1000 ms (tj. da podize event, pa da u okviru eventa proverava da li postoji ta slika ili ne), ali ne umem da ga "zaustavim" kada nadje taj fajl i iskopira ga. Nastavlja da "okida"....


Za zaustavljanje tajmera
Code:

Timer.Enabled = false;

Praksa još kaže i da se kod timer elapsed eventa obavezno na početku timer zaustavi, zatim izvrši potrebna obrada i na kraju timer startuje ponovo ukoliko je to potrebno da ne bi došlo do blokiranja programa (kada obrada unutar timer elapsed eventa traje duže nego interval tajmera onda dolazi do gomilanja uzastopnih timer elapsed eventa što blokira izvršavanje ostalih stvari... odoh već u offtopic... :)

Što se tiče čitanja fajla i lock-ovanja, probaj nešto na ovu foru:
Code:

int retrycount = 0;
bool iskopiran=false;
while (!iskopiran)
try
{
   ... kod za kopiranje fajla
  iskopiran=true;
}
catch
{
  retrycount++;
  Sytem.Threading.Thread.CurrentThread.Sleep(100);
  if (retrycount>100)
  {
     break;
  }
}

Kod pokušava da kopira fajl 10 sekundi u slučaju da je lock-ovan i ako ne uspe nastavlja sa radom. Ovih deset sekundi bi trebalo da bude dovoljno za manje fajlove, za veće opet verovatno treba više vremena.
Nadam se da sam pomogao.
Pozdrav!
[ Sandra_G @ 07.03.2006. 13:20 ] @
FileSystemWatcher - DA.
Ali... nije mi bas najjasniji NotifyFilter property. Koji element bi trebalo da stavim ako zelim da 'nagledam' folder za nastajanje odredjenog fajla?
Kreirala sam event Created, ali uopste ne registruje... Pretpostavljam da ima neke veze sa NotifyFilter property.
I jos nesto... Kako da zaustavim nadgledanje foldera kada nadjem ono sto mi treba?

Hvalaaaaa :D
[ Oliver Klaćik @ 07.03.2006. 20:23 ] @
Pošto 'hvataš' događaj kreiranja fajla, NotifyFilter ti nije bitan, jer koju god kombinaciju da staviš, radiće. Verovatno ti ne okida jer nisi stavila property EnableRaisingEvents na true. Da jesi, znala bi i kako da onemogućiš hvatanje događaja...
[ Sandra_G @ 10.03.2006. 09:15 ] @
Citat:
Oliver Klaćik: Ja sam skoro pravio neki service za monitoring foldera, pa čisto da ti skrenem pažnju... FileSystemWatcher.Created event okida u trenutku kada fajl počinje da se stvara u nadgledanom folderu... Ako je fajl malo veći, dobićeš exception kada pokušaš da mu pristupiš (radi kopiranja) jer OS još uvek drži lock nad fajlom. Inače, .Net nema nijedan 'fini' način provere da li je neki fajl pod lock-om... Pa, ako ti to bude stvaralo problem, imam neko zaobilazno rešenje koje mi je dao neki lik na MSDN forumu...


Olivere, bas bi mi trebalo to resenje o lockovanju.... Ako nije problem, da mi to prosledis... :) Hvala puno!
[ Oliver Klaćik @ 10.03.2006. 20:46 ] @
Evo ti link ka mom pitanju:

http://www.elitesecurity.org/tema/160418/0#1043532

gde ćeš naći rešenje...