代码之家  ›  专栏  ›  技术社区  ›  WernerCD

程序在真正结束前关闭

  •  3
  • WernerCD  · 技术社区  · 14 年前

    问题是:“日志”没有完成。程序关闭时,它似乎仍在写入,从而切断了日志的结尾。

    应用主体:

    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
    
            if (!e.Args.Contains("-gui"))
            {
                Process.SettingsPopulate();
                Process.WriteLogHead();
                Process.MoveFiles();
                Process.WriteLogEnd();
            }
            else
            {
                new MainWindow().ShowDialog();
            }
            this.Shutdown();
        }
    }
    

        public static void WriteLogEnd()
        {
            foreach (var log in from i in Items
                                where i.Used == false
                                let build = new StringBuilder()
                                select build.AppendFormat("{0, -12} > {1} > Not Found", _time, i.FileName))
            {
                Logs(log);
            }
    
            Logs("");
            Logs("Fin.");
        }
    

    Logs是一种简单的“写入控制台,写入文件”方法。我遍历已处理文件的列表,查找未使用的项。。。又名“找不到”。在它结束列表并写入Fin之前,它将关闭。

    使我困惑。如何阻止文件在writelogen完成之前关闭(因为,无论如何,它不应该在那之前结束)。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Henk Holterman    14 年前

    Logs是一种简单的“写入控制台,写入文件”方法。

    如果写入文件,则添加日志。关闭()什么的。必须关闭文件流才能刷新其缓存。

        2
  •  2
  •   dthorpe    14 年前

    在调试器中以命令行模式运行它,查看是否引发异常,或者在OnStartup例程中对代码进行try..catch处理。

    还要确保您正在关闭要将日志写入的任何文件或流。现在大多数文件I/O都是缓冲的,如果没有正确关闭流,最后一个缓冲区的数据可能不会提交到输出设备。