我有一个具有两种模式的程序:GUI 和 Just Run。 GUI 加载一个 WPF 表单并让我调整设置,而 Just Run 加载所述设置,然后……好吧……运行。
它是一款可自定义的批量移动文件工具。
问题:“日志”没有完成。好像程序关闭时它还在写,因此切断了日志的结尾。
应用主体:
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();
}
}
真的很简单。如果命令行有 -gui,它会加载 WPF...否则它只会运行。
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.");
}
日志是一种简单的“写入控制台,写入文件”方法。我遍历我的已处理文件列表,找到未使用的项目......也就是“未找到”。在结束列表并写入 Fin 之前,它会关闭。
让我很困惑。我怎样才能阻止文件在 WriteLogEnd 完成之前关闭(因为,afaik,无论如何它都不应该在此之前结束)。
最佳答案
Logs is a simple "Write to Console, Write to file" method.
如果它写入文件,添加一个 Logs.Close() 或其他东西。您必须关闭 FileStream 才能刷新其缓存。
关于c# - 程序在真正完成之前关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3817019/