0

私はWP7で最初のアプリを書いていますが、ISに奇妙な問題があります:

                case "pn_s":            
                IsolatedStorageFile isoStorage = IsolatedStorageFile.GetUserStoreForApplication();
                //IsolatedStorageFileStream isoStream = isoStorage.CreateFile("plan_zajec_pn.txt"); 
                IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream(("plan_zajec_pn.txt"), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None, isoStorage);
                StreamWriter writer = new StreamWriter(isoStream);
                string dane="";
                for (int i = 0; i < 10; i++)
                {
                    dane += godzina[i].Text;
                    dane += ";";
                    dane += przedmiot[i].Text;
                    dane += ";";
                    dane += sala[i].Text;
                    dane += ";";
                }
                writer.WriteLine(dane);
                isoStream.Close();
                break;

実際には機能しません...アプリケーションを再度開いた後にファイルを作成しますが、空です。「dane」をチェックしましたが、日付が含まれています

4

1 に答える 1

0

を使用する場合StreamWriter、基になるストリームを閉じてはなりません。そうしないと、ライターがすべてのデータを書き込むのに十分な時間がない可能性があります。ライターを閉じるだけで、ストリームが閉じられます。usingまた、エラーがスローされた場合でも、ストリームを閉じるステートメントで囲む必要があります。

最終的に、コードは次のようになります。

case "pn_s":            
    using (var isoStorage = IsolatedStorageFile.GetUserStoreForApplication())
    {
        using (var isoStream = new IsolatedStorageFileStream(("plan_zajec_pn.txt"), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None, isoStorage))
        {
            using (var writer = new StreamWriter(isoStream))
            {
                string dane = "";

                for (int i = 0; i < 10; i++)
                {
                    dane += godzina[i].Text;
                    dane += ";";
                    dane += przedmiot[i].Text;
                    dane += ";";
                    dane += sala[i].Text;
                    dane += ";";
                }

                writer.WriteLine(dane);
            }
        }
    }

    break;
于 2013-04-02T12:50:18.577 に答える