C# 使用StreamWriter写入文件需要花费很长时间&;自动重新加载窗口

C# 使用StreamWriter写入文件需要花费很长时间&;自动重新加载窗口,c#,io,streamwriter,C#,Io,Streamwriter,在我的程序中,我使用Window\u Loaded事件将App.config文件写入.exe目录,因为我需要它来连接其中的连接字符串 它工作得非常好,但是在使用StreamWriter时速度似乎非常慢,而且它似乎会在写入窗口后立即重新加载 我的意思是:窗口完全加载(控件呈现等),代码末尾的MessageBox显示,但文件仍然不在那里。 之后,窗口消失,重新出现,再次显示messagebox&只有在该窗口中,.config文件才被完全写入并加密 此外,即使在写入文件之前,出于某种原因,我加载的事件

在我的程序中,我使用
Window\u Loaded
事件将App.config文件写入.exe目录,因为我需要它来连接其中的连接字符串

它工作得非常好,但是在使用StreamWriter时速度似乎非常慢,而且它似乎会在写入窗口后立即重新加载

我的意思是:窗口完全加载(控件呈现等),代码末尾的MessageBox显示,但文件仍然不在那里。 之后,窗口消失,重新出现,再次显示messagebox&只有在该窗口中,.config文件才被完全写入并加密

此外,即使在写入文件之前,出于某种原因,我加载的事件中的其余代码似乎仍在工作,而不是加载的事件暂停直到StreamWriter完成

我没有主意了,有没有办法提高文件的写入速度,以及如何在写入完成之前正确停止程序的执行

我当前的代码:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    string loc = Assembly.GetExecutingAssembly().Location;

    if (File.Exists(loc + ".config"))
        File.Delete(loc + ".config");

    string result = "";
    using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Hub.Resources.Hub.exe.config"))
    using (StreamReader reader = new StreamReader(stream))
    {
        result = reader.ReadToEnd();
    }

    //I've also tried using File.WriteAllText(...), same result
    using (StreamWriter wr = new StreamWriter(loc + ".config"))
    {
        wr.Write(result);
    }

    //Encrypt config file
     Configuration conf = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    ConfigurationSection s = conf.GetSection("connectionStrings");
    if (s != null)
    {
        s.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
        s.SectionInformation.ForceSave = true;
        conf.Save(ConfigurationSaveMode.Full);
    }
    //Show messagebox to notify me (purely informational, will be deleted after it's finished)
    //This messagebox seems to be shown twice, once before the file is written, once after it's written & encrypted.
    MessageBox.Show("Finished Loading");
}

PS:在调试过程中,这一切都发生得很好,没有重新加载窗口,文件会立即显示,这是应该的。

结果是我的防病毒软件强制.exe首先在沙盒模式下运行

这不是一个代码错误,一旦我将我的.exe添加到AV的排除项中,它就可以100%正确地工作,就像在调试一样

虽然腾讯似乎认为我的程序是特洛伊木马,但不知道为什么,但我必须说这有点滑稽:-)


因此,如果其他人有窗口加载两次或无法正常工作的问题。尝试将.exe添加到AV的排除列表;-)

您如何知道StreamWrites会重新加载窗口?“似乎是”?防病毒软件的实际值是10美分吗?:)