2

StreamWinRTに移植する必要があるカスタムを処理する.NETコードがあります。その動機は、アプリが暗号化されたファイル(カスタムStream)を読み取ることです。完全な.NETで私は使用します

 var readFileStream = File.OpenRead(bookPath);
 var readDecryptedStream = new MyStream(password, readFileStream);
 //it is a zip file
 var readZipFile = new ZipFile(readDecryptedStream);
 //extract files from the zip file

MyStream読み取り/書き込みメソッドから継承しStream、いくつかのエンコードとデコードを実行します。完全なコードはここhttp://dl.dropbox.com/u/73642/mystream.csにあります。このコードは.NETで正常に機能します。

私のWinRT実装は

var file =await ApplicationData.Current.LocalFolder.GetFileAsync(bookPath); //I copied the same file to Local folder
var filestream = await file.OpenStreamForReadAsync();
var readDecryptedStream = new MyStream(password, readFileStream);
ZipArchive z = new ZipArchive(readDecryptedStream , ZipArchiveMode.Read);

このコードの問題はnew ZipArchive(readDecryptedStream , ZipArchiveMode.Read);、ストリームの読み取りが終了しないことです。readメソッドにブレークポイントを設定するMyStreamと、常にoffset = 0で呼び出されます(したがって、終了することはありません)。

暗号化されていないファイルを使用するとnew ZipArchive(filestream , ZipArchiveMode.Read);、すべてが機能するため、問題はMyStream実装にあるはずです。

問題は何ですか?カスタムStreamには、完全な.NETとは異なるWinRTの実装が必要ですか?

4

1 に答える 1

0

コンピューターを再起動して解決しました。非常に奇妙ですが、ApplicatonDataからのファイルの読み取りを含むすべてのストリームが機能しなくなり、コンピューターを再起動する必要がある場合があります。それは本当の痛みです。

于 2013-03-23T20:39:56.153 に答える