OT: .NET - chyba pri kopirovani souboru

Marek Sembol hwm.land na gmail.com
Pátek Prosinec 21 00:33:03 CET 2012


V textu;)

2012/12/20 Ladislav Vaiz <spam na nagano.cz>:
> Dispose by mělo stačit, víc už s tím neuděláte.
Myslim si totez.

> Chápu to správně, že soubor čtete přes  FileStream a ten samý zkopírujete
> přes File.Copy do jiného?
Ano, presne tak.

> Zaráží mne, že jej otevíráte s FileShare.Read,
> nevím, proč by to mělo vadit pro zkopírování i kdyby jste ho neuzavřel.
Shouhlas ohledne "vadit pro kopirovani", podle mne taky nemelo. Ten
Dispose je pro mne kriticky z duvodu, ze po kopirovani(ch) ho mazu.
FileShare.Read je z duvodu, ze ten soubor je obcas znacne dlouhy a
"zdrojovemu programu" obcas trva nechutne dlouho, nez mi ho nakopiruje
ke zpracovani. Proste pojistka pro mne, ze "autor" v nem jeste nehrabe
a mam ho komplet a konzistentni. Pokud ho ma autor jeste otevreny pro
Write, tak otevreni neprojde a ja si zpracovani odlozim o par sekund.

> Co zkusit zkopírovat soubot vlastní funkcí s jasne daným způsobem sdílení?
No mohu to zkusit (i kydz je to tedy znovuvynalezeni kola, navic
pomoci mnohouhelniku:) )

> Nebo koukněte Reflectorem do File.Copy, jestli nedělá ještě něco dalšího.
No verim, ze je to prakticky ciste volani OS a osetreni navratove
hodnoty,ale zkusim mrknout do Rotoru nebo jeste lepe tim reflectorem

> L.
>
>
Diky za podnety,
Marek


> On 20.12.2012 14:16, Marek Sembol wrote:
>>
>> Mysleno je tim toto:
>> m_fileReader.Dispose ();
>>
>> Upresnim, ze mezi timto Disposem a pokusem o kopirovani zpravidla
>> neprobehne GC
>>
>> Kde m_fileReader je definovan:
>> private FileStream              m_fileReader;
>>
>> a oteviran:
>> m_fileReader = new FileStream (szFilename, FileMode.Open,
>> FileAccess.Read, FileShare.Read);
>>
>> Marek
>>
>> 2012/12/20 Ladislav Vaiz<spam na nagano.cz>:
>>
>>>
>>> Mohl byste upřesnit, co myslíte tím "zdrojovy soubor jsem par radku driv
>>> korektne uzavrel" ? Ideálně poslat dotyčný kód.
>>> L.
>>>
>>> Dne 20.12.2012 09:28, Marek Sembol napsal(a):
>>>
>>>
>>>>
>>>> Zdravim pritomne:)
>>>> Omlouvam se za OT, ale uplne mimo misu to neni a je tu rada schpnych
>>>> lidi:)
>>>>
>>>> Prostredi: W2008R2, program v C#,  .NET 3.5
>>>>
>>>> Sporadicky se mi stane, ze pri pokusu o zkopirovani souboru pomoci
>>>> prikazu
>>>> File.Copy (fileToProcess.FullFileName, szDestinationDir + szFileName,
>>>> true);
>>>> dostanu nasledujici vyjimku:
>>>> IOException: The process cannot access the file
>>>>
>>>>
>>>> 'D:\RTScs\DataBackup/DFH.FI1TRN.D121217.T031025.D121217T031026016.D121217T031030398'
>>>> because it is being used by another process.
>>>> Problem je, ze:
>>>> -dotycny soubor v denam adresari neexistuje
>>>> -zdrojovy soubor jsem par radku driv korektne uzavrel
>>>> -o 10 sekund pozdeji probehne kopirovan i OK
>>>>
>>>> Nejaky napad?
>>>> Marek
>>>>
>>>>
>>>
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list