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

本文关键字:我的 文件 为什么 | 更新日期: 2023-09-27 18:04:46

我正在创建一个"debug/log"文本文件,以尝试查看当我正在工作的应用程序挂起时,哪些"后台线程"正在运行。

首先,当它们被激活时,我将它们存储在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_*方法被调用;这是可能的每一个开始也停止在文件被写入之前,但我高度怀疑…

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

要么Close()写入流,要么(更好)将其放入using语句。

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