0

「デバッグ/ログ」テキストファイルを作成して、作業中のアプリがハングしたときに実行されている「バックグラウンドスレッド」を確認しようとしています。

まず、アクティブ化されると、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_*メソッドのいくつかが呼び出されていることを私は知っています。ファイルが書き込まれる前に、開始されたすべてのユーザーが停止する可能性もありますが、私はそれを非常に疑っています...

4

1 に答える 1

3

ストリームClose()ライターまたは(より良い)それをusingステートメントに入れます。

using(StreamWriter file = new StreamWriter(@"\hereIAm.txt"))
{
    file.WriteLine(SSCS.ActiveBackgroundThreads.ToString());
}
于 2013-03-19T15:28:27.453 に答える