我正在创建一个“调试/日志”文本文件,以尝试查看当我正在处理的应用程序挂起时哪些“后台线程”正在运行。
首先,当它们被激活时,我将它们存储在 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_* 方法正在被调用;在写入文件之前,每个开始的人都有可能停止,但我非常怀疑......