Zjištění "uzavření" souboru   otázka

I/O operace, .NET

Dobrý den. Prosím o radu, jak ošetřit čekání programu na uložení (uzavření) souboru. Konkrétně moje aplikace pracuje s dokumentem Word. Po ukončení dokumentu (ukončení Wordu uložením souboru nebo i Stornem) aplikace pokračuje dále, ovšem systém se souborem .doc ještě pravděpodobně pracuje. Aplikace mi tak kolabuje. Pokud aplikaci ladím krokováním, případně pokud zařadím " Threading.Thread.Sleep(dostatečně dlouhý čas), vše je v pořádku. Zatím se mi nepodařilo objevit parametr souboru, který reprezentuje jeho "uzavření". Děkuji.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Nakonec jsem problém vyřešil sice amatérsky, ale funguje to:

     Try
10:                 If My.Computer.FileSystem.GetFileInfo("dokument.doc").LastWriteTime = My.Computer.FileSystem.GetFileInfo("druhydokument.doc").LastWriteTime Then
                        My.Computer.FileSystem.DeleteFile("druhydokument.doc")
                    Exit Sub
                    End If
     Catch ex As Exception   
                    Me.Refresh()
                    Threading.Thread.Sleep(100)
                    GoTo 10
     End Try

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Tohle je opravdu hodně hloupé řešení, zvláště to GoTo.

Správně by se to asi řešilo buď komponentou FileSystemWatcher, anebo že se budete snažit získat Exclusive Lock na dotyčný soubor, což půjde až v okamžiku, kdy ho Word uvolní (dvě aplikace nemůžou mít na soubor exkluzivní zámek).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback