为什么我的文件没有被写入?

时间:2013-03-19 15:25:13

标签: c# .net windows-ce stringbuilder streamwriter

我正在创建一个“调试/日志”文本文件,以便在我正在处理的应用程序挂起时尝试​​查看正在运行的“后台线程”。

首先,当它们被激活时,我将它们存储在StringBuilder中:

public static StringBuilder ActiveBackgroundThreads = new StringBuilder();

有很多(将近50个)“背景线程”(因此原始开发人员将它们命名为,虽然我不确定它们是否真的如此)可以打开和关闭,并且我添加了添加内容StringBuilder就像那样:

private void InitializeBackgroundThread_PDALoginTerminate( bool add )
{
    try
    {
        if ( add )  
        {
            pc.PDALoginTerminate += new PendingCommands.PDALoginTerminateEventHandler( DeinitLoginDialogs );
            SSCS.ActiveBackgroundThreads.Append("DeinitLoginDialogs\r\n");
        }
        else
        {
            pc.PDALoginTerminate -= new PendingCommands.PDALoginTerminateEventHandler( DeinitLoginDialogs );
            SSCS.ActiveBackgroundThreads.Replace("DeinitLoginDialogs\r\n", "");
        }
    . . .

...我终于(一旦我在挂起之前到达代码中的最后一个位置)将StringBuilder内容写入文本文件,或尝试:

StreamWriter file = new StreamWriter(@"\hereIAm.txt");
file.WriteLine(SSCS.ActiveBackgroundThreads.ToString());

...然而,当我打开那个文件(它确实被创建)时,它没有任何内容(0字节)。我知道其中一些InitializeBackgroundThread_ *方法正在被调用; 可能每个人在文件写入之前也会被停止,但我非常怀疑......

1 个答案:

答案 0 :(得分:3)

流编写者Close()或(更好)将其放入using语句。

using(StreamWriter file = new StreamWriter(@"\hereIAm.txt"))
{
    file.WriteLine(SSCS.ActiveBackgroundThreads.ToString());
}