Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

FileLoadException kod dinamickog ucitava assembly-a

  • 7 odgovora
  • 3.409 pregleda

Najnovija ↓

FileLoadException kod dinamickog ucitava assembly-a 15.04.2008. u 12:23 · pre 225 meseci #1
Problem:
Treba da napravil dinamicko ucitavanje assembly-a. I to tako sto program periodicno proverava odredjeni direktorijum,i cim se pojavi novi dll fajl u njemu on ga ucitava,provjeri da li implementira odredjeni interface i pokrece execute metodu.

Moje resenje:
Koristio sam FileSystemWatcher, postavio filtere i sve sto treba.Medjutim posto je isti cesto vracao po nekoliko eventa, ubacio sam dodatni Timer, preko kojeg cekam po sekundu izmedju provjera.
Sve to fino radi osim toga sto kod linije:

Code:

Assembly load = Assembly.LoadFrom(e.FullPath);


dobijam ovaj FileLoadException:
Could not load file or assembly 'file:///d:\plugins\test.dll' or one of its dependencies. The process cannot access the file because it is being used by another process.

Naravno prije ove gornje zaustavim FileSystemWatcher :
Code:

watcher.EnableRaisingEvents = false;                


Da li je imao neko slican problem?

Potpis
Free advice is seldom cheap.
Re: FileLoadException kod dinamickog ucitava assembly-a 15.04.2008. u 16:50 · pre 225 meseci #2
Probaj da izbegnes FileSystemWatcher jer mozda (nisam siguran 100%) on drzi jos neke handle-ove od fajlova ..
Alternativa je da koristis timer i u njegovom tick eventu da izlistas sve fajlove (System.IO.Directory) koje se nalaze u plugin direktorijumu i onda da ucitas modul ..
Potpis
Viva lollapalooza
Re: FileLoadException kod dinamickog ucitava assembly-a 15.04.2008. u 16:58 · pre 225 meseci #3
FileSystemWatcher reaguje na upisivanje prvog bajta na disk što će reći da u trenutku kad pokušavaš da učitaš assembly on verovatno nije u potpunosti snimljen u folder
Potpis
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
Re: FileLoadException kod dinamickog ucitava assembly-a 15.04.2008. u 17:07 · pre 225 meseci #4
Obojica ste naravno u pravu.

A da li bi bilo dovoljno da stavim Thread.Sleep() na recimo dvije sekunde prije ucitavanja assembly-a ?
U principu nije problem sa ostatkom aplikacije, a najbrze mi je resenje. :)
Potpis
Free advice is seldom cheap.
Re: FileLoadException kod dinamickog ucitava assembly-a 15.04.2008. u 17:29 · pre 225 meseci #5
Osim ako kopiranje tog .dll-a na tu lokaciju ne traje duze od 2sec.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: FileLoadException kod dinamickog ucitava assembly-a 15.04.2008. u 19:40 · pre 225 meseci #6
Posto su uglavnom fajlovi koji su velicine par stotina kb i kopiraju se lokalno sa hdd ,mislim da nece biti problem.

Hvala na odgovorima.
Potpis
Free advice is seldom cheap.
Re: FileLoadException kod dinamickog ucitava assembly-a 15.04.2008. u 19:43 · pre 225 meseci #7
Citat:
@bags
U principu nije problem sa ostatkom aplikacije, a najbrze mi je resenje. :)

Nekad "najbrze resenje" ne donosi ni blizu 100% pouzdanosti koda ... :)
Potpis
Viva lollapalooza
Re: FileLoadException kod dinamickog ucitava assembly-a 16.04.2008. u 09:26 · pre 225 meseci #8
Ako ti je vec ok da blokiras thread dok plugin ne bude dostupan, onda ti je mozda bolje resenje da jednostavno udjes u petlju i prvo ti probas da otvoris fajl u exclusive locku, i da pokusavas dok ga ne dobijes sa malim pauzicama izmedju (recimo 100ms). Posle toga zatvori fajl i pozovi Assembly.Load... Tako ces cekati minimalni period vremena.



Potpis
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ć
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme