1

Visual Studio 2010 を使用すると、ファイルを読み込もうとすると、「ファイルは別のプロセスで使用されています」というメッセージがほぼランダムに表示されます。同じ手順で約10個のxmlファイルをメモリに読み込んでいます

壊れるコードは

private static TextReader CreateTextReader(IsolatedStorageFile isolatedStorageFolder, string path)
        {
            TextReader textReader = null;

            if (isolatedStorageFolder == null)
                textReader = new StreamReader(path);
            else
                textReader = new StreamReader(new IsolatedStorageFileStream(path, FileMode.Open, isolatedStorageFolder));

            return textReader;
        }

コードは 10% の確率で壊れます

 textReader = new StreamReader(path);

個人的には、ある種のガベージ コレクションの問題だと思います。この種の問題をデバッグする方法についてのヒントは誰にでもあります。

4

2 に答える 2

1

を処分する必要がありTextReaderます。using次のようなステートメントを使用します

using (TextReader r = CreateTextReader(...))
{
}

そうしないと、アプリケーションを閉じてもファイルが開いたままになります。

EDIT
あなたは、実際にすでに使用しているという質問に対するコメントで言っていますusing-読み込もうとしているファイルが実際に別のアプリケーションによって開かれている可能性がありますか? ウイルス対策ソリューションがスキャン中にファイルをロックすることがありますが、しばらくすると機能しますか、それとも再起動する必要がありますか?

于 2012-05-21T14:49:56.063 に答える
1

ファイルをロックする可能性のあるすべての Steam リーダー操作で、必ず .Dispose または .Close を呼び出してください。そのコードは私にとってフラットなプログラムとして機能するので、それはあなたの問題かもしれません。

于 2012-05-21T14:49:23.377 に答える