"The process cannot access the file because it is being used by another process." 与 SystemReader

"The process cannot access the file because it is being used by another process." with SystemReader

我没有编码经验,但很多年前一直在尝试修复损坏的程序。我一直在摸索着修理东西,但偶然发现了一块我无法修理的东西。根据我收集到的信息,您可以让 Alexa 附加一个 Dropbox 文件,程序会读取该文件以查找更改,并根据它是什么,根据 XML 文档中的可自定义列表执行特定命令。

在我所做的一百次尝试中,我已经让它工作了大约五次,每隔一次它就会崩溃并且 Visual Studio 给我:"System.IO.IOException: 'The process cannot access the file 'C:\Users\"User"\Dropbox\controlcomputer\controlfile.txt' because it is being used by another process.'"

这是 Dropbox 追加的文件,只有在我追加文件时才会发生这种情况,否则,程序运行正常,我可以导航它。 我相信这是处理此问题的代码,因为这是所有代码中唯一提到的 StreamReader:

public static void launchTaskControlFile(string path)
    {
        int num = 0;
        StreamReader streamReader = new StreamReader(path);
        string str = "";
        while (true)
        {
            string str1 = streamReader.ReadLine();
            string str2 = str1;
            if (str1 == null)
            {
                break;
            }
            str = str2.TrimStart(new char[] { '#' });
            num++;
        }
        streamReader.Close();
        if (str.Contains("Google"))
        {
            MainWindow.googleSearch(str);
        }
        else if (str.Contains("LockDown") && Settings.Default.lockdownEnabled)
        {
            MainWindow.executeLock();
        }
        else if (str.Contains("Shutdown") && Settings.Default.shutdownEnabled)
        {
            MainWindow.executeShutdown();
        }
        else if (str.Contains("Restart") && Settings.Default.restartEnabled)
        {
            MainWindow.executeRestart();
        }
        else if (!str.Contains("Password"))
        {
            MainWindow.launchApplication(str);
        }
        else
        {
            SendKeys.SendWait(" ");
            Thread.Sleep(500);
            string str3 = "potato";
            for (int i = 0; i < str3.Length; i++)
            {
                SendKeys.SendWait(str3[i].ToString());
            }
        }
        Console.ReadLine();
    }

我在网上搜索过,但不知道如何应用我找到的任何东西。再说一次,在进行此工作之前,我没有编码经验,所以表现得就像你在和蹒跚学步的孩子说话一样。

抱歉,如果我在这里添加的任何内容都是不必要的,我只是想做到彻底。任何帮助将不胜感激。

我像 Adriano Repetti 所说的那样设置了一个尝试延迟模式,它似乎在工作,但是全力以赴只会导致它不会崩溃,所以我不得不在它周围添加一个循环并将循环设置为停止当变量命中 1 时,每当触发任何命令类型时都会发生这种情况。这将它带出循环并将整数设置回 0,再次触发循环。这似乎现在有效。