0

ボタンクリックでインターネット非同期からファイルを読み取り、それをtxtファイルに書き込みます。ファイルが存在するかどうか、ボタンクリックを常にチェックします。ファイルが存在しない場合は、関数を使用してダウンロードします。その後、ファイルから読み取る関数を呼び出します。問題は、通常 IsoaltedStorageFileStream Exception で Operation not allowed が発生することです。コードから読み込み用の関数を削除し、最初に書き込みのみを呼び出し、プログラムを実行すると例外はありません。その後、読み込み用の関数を再度記述して動作します。最初の方法が機能しないのはなぜですか?

4

1 に答える 1

0

問題は、ファイルへのアクセスにあります。非同期操作でファイルが開かれ、まだ書き込み中にファイルから読み取りたい場合。これは並行性の問題です。ロジックにある種のロックを追加します。単純なブール値フラグでも十分です。

private canRead = false;

アプリが読み取りを終了したら、それを true に設定します。次に、読み取りロジックで

if(canRead)
{
     //read file
}

その他のオプションは、ボタンを非表示にして、ダウンロードが終了したときに表示することです。

于 2012-06-11T17:22:12.377 に答える