为什么我的文件没有被写入
本文关键字:我的 文件 为什么 | 更新日期: 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());
}