c# - 程序在真正完成之前关闭

标签 c# command-line-tool

我有一个具有两种模式的程序: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/

相关文章:

c# - 多重继承

c# - 将具体实现作为通用返回

c# - 如何设置 SortedDictionary 的初始容量?

c# - Guid 应包含 32 位数字和 4 个破折号

c# - 将 C# SerialPort 连接到 Hyper-V 命名管道(就像 PuTTy 一样)

Android 命令行工具 - 带库的项目中的 Ant 调试

command-line - 如何使用 zip cmd 工具将文件移动到未压缩的 zip

c++ - Xcode 中缺少 C++ 命令行工具应用程序的 info.plist 文件

swift - Xcode GM : no swift language for OS X command line tool project?

image-processing - 无论如何(命令行工具)是否可以计算 .NEF(还有 .CR2、.TIFF)的 MD5 哈希,而不管任何元数据?