そのため、アプリケーションの複数のコピーが同時にアクセスできないように、C# クライアント アプリケーションで分離ストレージ ファイルをロックしようとしています。次の構文を使用しています。
lockStream = new IsolatedStorageFileStream("my.lck", FileMode.OpenOrCreate, isoStore);
lockStream.Lock(0, 0);
このコードにより、アプリケーションはフレームワークの FileStream.Lock メソッド内から NullReferenceException をスローします。長さにゼロ以外の値を使用してみました。ファイルにバイトを書き込んでから、そのバイトだけをロックしようとしました。私が何をしても、同じ NullReferenceException が私を悩ませ続けます。これが分離ストレージで可能かどうかは誰にもわかりませんか?
また、Silverlight アプリケーションでもこの手法を使用することを検討していますが、Silverlight はファイル ロックをサポートしていますか? MSDN のドキュメントではそうではないと示されているようですが、C# MVP からのこの投稿を見たことがあります。
更新: Microsoft は私が Connect に提出したバグを修正しましたが、フレームワークのバージョン 4 ではリリースされませんでした。うまくいけば、次の SP またはフル リリースで利用できるようになるはずです。