微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“该进程无法访问该文件,因为它正在被另一个进程使用”与SystemReader

如何解决“该进程无法访问该文件,因为它正在被另一个进程使用”与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所说的那样设置了一个尝试延迟模式,它似乎正在工作,但是进行平坦操作只会导致它不会崩溃,因此我必须在其周围添加一个循环并将该循环设置为在变量hit 1,在任何命令类型被触发时都会发生。这将其带出循环,并将整数设置回0,再次触发循环。看来现在正在工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。