Laden...

Der Prozess kann nicht auf die Datei zugreifen....

Erstellt von Thron vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.206 Views
T
Thron Themenstarter:in
63 Beiträge seit 2017
vor 6 Jahren
Der Prozess kann nicht auf die Datei zugreifen....

Hallo an Alle,

habe mal wieder ein Problem und komme nicht weiter. Ich Wandle mit Lame wav zu mp3 und möchte danach die *.wav in *.converted umbennen. Jetzt bringt mir mein Programm den Fehler, dass nicht auf die Datei zugegriffen werden kann, da ein sie bereits von einem anderen Prozess verwendet wird. Ich habe schon mit Dispose etc. herumprobiert und bekomme nichts hin.... ?( ?( ?( ?( ?(

Kann mir bitte jemand helfen...

Vielen Dank schon jetzt im Voraus...


for (int i = 0; i < GefundeneAudioDateien.GetLength(0); i++)

                            {
                                string datei = Convert.ToString(GefundeneAudioDateien[i]);
                                string[] splitdatei = datei.Split('.');
                                string fn_FullPath = Convert.ToString(GefundeneAudioDateien[i].FullName);
                                string fn_Directory = Convert.ToString(GefundeneAudioDateien[i].Directory);

                                ProcessStartInfo psi = new ProcessStartInfo();
                                psi.UseShellExecute = false;
                                psi.CreateNoWindow = true;
                                psi.WindowStyle = ProcessWindowStyle.Hidden;
                                psi.FileName = Application.StartupPath + @"\lame.exe";
                                psi.Arguments = "-V2" + " -q 0 " +
                                               "\"" + fn_FullPath + "\"" + " " +
                                                "\"" + fn_Directory + "\\" + splitdatei[0] + ".mp3" + "\"";

                                Process p = Process.Start(psi);
                                p.Close();
                                p.Dispose();
                                Thread.Sleep(1000);

                                var fileInfo = new FileInfo(fn_FullPath);
                                File.Move(fn_FullPath, fileInfo.Directory + "\\" + splitdatei[0] + ".converted");

                            }

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

naja - da wird die lame.exe wohl noch ein Handle drauf haben.

Vorschlag: Versuch doch mal mit Process.WaitForExit auf die Lame.exe zu warten anstatt die einfach abzuschließen... (Das Thread.Sleep ist allemal nur ein sehr hässlicher Hack)

LG

T
Thron Themenstarter:in
63 Beiträge seit 2017
vor 6 Jahren

habe es mit Wait probiert und es hat geklappt....danke