Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Práce se souborem, který je spuštěn v pozadí

Aktivity
Avatar
Dominik
Člen
Avatar
Dominik:8.10.2019 21:37

Ahoj.
Mám jednoduchou aplikaci, kde jsou 2 tlačítka.
Tlačítko1 - spustí OpenFileDialog a uživatel vybírá nějaký soubor. (Slouží k přečtení textu, který je zapsán v souboru --- přes StreamReader, text se zapisuje do textboxu)
Tlačítko2 - spustí OpenFileDialog a uživatel vybírá nějaký soubor. (Slouží k mazání vybraných souborů.)

A zde je ten problém. Když vyberu nějaký soubor pomocí Tlačítka1 (načte text do textboxu) a tentýž soubor poté zvolím pomocí Tlačítka2 (maže daný soubor) tak mi nelze vybraný soubor smazat z důvodu, že tento soubor je spuštěný již v nějakým programu v pozadí. (Což pokud se nepletu tak je právě ta aplikace). Moje otázka tedy zní, je nějaká možnost jak celou aplikaci nějak "RESTARTOVAT" abych nemusel zbytečně a zdlouhavě vypínat aplikaci a poté zase spouštět?

Zkusil jsem: Já jakožto začátečník bych tento problém řešil nějakým "RESTARTEM" celé aplikace. Ale to bohužel nevím jestli funguje a ani nevím jak toto řešení zrealizovat. Takže jsem bohužel zatím nic nezkoušel....

Chci docílit: Chci docílit toho, aby se jednoduše vybraný soubor vymazal i přesto, že je používaný na pozadí... Nebo docílit toho, aby již na pozadí nebyl používán..

 
Odpovědět
8.10.2019 21:37
Avatar
Neaktivní uživatel:8.10.2019 23:00

Použij using blok (https://www.itnetwork.cz/…-soubory-txt) nebo File.ReadAllText() (nebo File.ReadAllLines(), to vrací pole jednotlivých řádků), všechny možnosti by měly soubor na konci čtení odblokovat (using blok už ze své podstaty).

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
8.10.2019 23:00
Neaktivní uživatelský účet
Avatar
Petr Doleček
Tvůrce
Avatar
Petr Doleček:8.10.2019 23:16

Zkus po přečtení soubor uzavřít příkazem soubor.Close();
Takhle to mám v programu já a nejsou s tím problémy:

using (StreamReader sr = new StreamReader(filePath)) {
        while (!sr.EndOfStream) {
                string[] readedLine = sr.ReadLine().Split(';');
        }
        sr.Close();
}
 
Nahoru Odpovědět
8.10.2019 23:16
Avatar
Odpovídá na Petr Doleček
Neaktivní uživatel:9.10.2019 19:03

Není tahle verze už trochu overkill?

Nahoru Odpovědět
9.10.2019 19:03
Neaktivní uživatelský účet
Avatar
Hans
Člen
Avatar
Odpovídá na Neaktivní uživatel
Hans:10.10.2019 10:46

Je, v rámci Close() se volá pouze Dispose(), který je potom stejně zavolán na konci using bloku, takže je to redundantní.

 
Nahoru Odpovědět
10.10.2019 10:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.