我正在创建一个“调试/日志”文本文件,以便在我正在处理的应用程序挂起时尝试查看正在运行的“后台线程”。
首先,当它们被激活时,我将它们存储在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_ *方法正在被调用; 可能每个人在文件写入之前也会被停止,但我非常怀疑......
答案 0 :(得分:3)
流编写者Close()
或(更好)将其放入using
语句。
using(StreamWriter file = new StreamWriter(@"\hereIAm.txt"))
{
file.WriteLine(SSCS.ActiveBackgroundThreads.ToString());
}