Problem z usunięciem pliku

0

Hej mam taki problem: tworze sobie plik, następnie uruchamiam inną aplikację i jako parametr wejściowy daję jej ten stworzony plik, jeśli po jakimś czasie nie zauważę ze ta aplikacja wypluła jakieś wyniki to ubijam ją i chcę skasować ten plik(oczywiście w szystko robione w C#.net)....i wtedy pojawia się błąd :

System.IO.IOException: The process cannot access the file 'input.cas' because it is being used by another process.

prawdopodobnie pojawia się on dlatego że aplikacja którą ubiłem nie zwolniła blokady do tego pliku,
i pytanie moje polega na tym jak ściągnąć taką blokadę albo w inny sposób sobie poradzić z tym błędem, żebym mógł ostatecznie usunąć ten plik?

z góry dzięki za odpowiedzi.

0

FileStream.Close() ?

Tak na logikę - skąd ktoś to może wiedzieć, skoro nie pokazałeś kodu?

0

A jak ubijasz? Może trzeba trochę poczekać zanim zostaną zwolnione zasoby przydzielone temu procesowi..

0

Kod:

do
            {
                alive = true;
                numberOfIterations++;

                if (numberOfIterations == 12 && !this.ExistWorkingFiles() && !fluentProcess.HasExited)
                {
                    log.Warn("There wasn't any licence for fluent, ending program...");
                    fluentProcess.Kill();
                    alive = false;

                    throw new FluentNoLicenseException("after 4 minutes no working files - no license found");
                }
                if (fluentProcess.HasExited)
                {
                    alive = false;
                }

                Thread.Sleep(10000);
            } while (alive);

w tej petli sprawdzam czy program ktory uruchomilem wyrzucil jakies pliki tymczasowe....jesli nie to znaczy ze nie dostal licencji wiec go ubijam i chce wyczyscic katalog w ktorym pracuje tamtem program, nie mam kontroli nad tym czy program zwalnia plik czy nie...

0

A widzisz, jakbyś zajrzał w dokumentację, przeczytał byś

The Kill method executes asynchronously. After calling the Kill method, call the WaitForExit method to wait for the process to exit, or check the HasExited property to determine if the process has exited.

Ty nie czekasz, tylko od razu rzucasz wyjątek i pewnie od razu po wyłapaniu próbujesz usunąć pliki.

0

tak zgadza sie, chce je Od razu usunac po ubicu programu, wiem ze pliki ktore byly w uzyciu beda nadal zarezerwowane dla programu ktory ubilem.....i wlasnie chodzi mi o to czy jest jakis sposob zeby powiedzmy "sciagnac taka blokade z pliku" ??

0

Metodą Process.Kill tylko inicjujesz ubijanie procesu. Po wywołaniu Kill musisz wywołać WaitForExit aby zaczekać, aż zostanie ubity do końca i zostaną zwolnione zasoby przydzielone temu procesowi. Ubity do końca proces pliku nie blokuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1