所以我試圖鎖定我的C#客戶端應用程序中的一個孤立的存儲文件,以便我的應用程序的多個副本無法同時訪問它。我使用的語法如下:.NET隔離存儲文件鎖定拋出NRE
lockStream = new IsolatedStorageFileStream("my.lck", FileMode.OpenOrCreate, isoStore);
lockStream.Lock(0, 0);
此代碼會導致我的應用從框架的FileStream.Lock方法內拋出一個NullReferenceException。我曾嘗試使用非零值的長度。我試圖寫一個字節的文件,然後鎖定該字節。不管我做什麼,同樣的NullReferenceException一直困擾着我。有沒有人知道這是可能的孤立存儲?
另外我正在研究在Silverlight應用程序中使用這種技術,Silverlight是否支持文件鎖定? MSDN文檔似乎表明它沒有,但我已經從C#MVP,說確實看到this post。
更新:Microsoft修復了我在Connect上提交的錯誤,但它並未在框架的第4版中發佈。它應該可用於下一個SP或完整版本。
我能夠通過使用反射來呼籲IsolatedStorageFileStream的私人「m_fs」字段Lock方法等,以解決此bug,因此: lockStream =新IsolatedStorageFileStream(「q.lck」,FileMode.OpenOrCreate,isoStore); FileStream m_fs = typeof(IsolatedStorageFileStream).InvokeMember((「m_fs」),BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance,null,lockStream,null)作爲FileStream; m_fs.Lock(0,long.MaxValue); – bsiegel 2010-03-05 15:57:55