[英]“Unable to open database file” after uploading to SkyDrive
我有一個使用SQLite數據庫的WP7應用程序。 該應用程序的一個功能是備份到SkyDrive,它可以正常工作,但是此后我的應用程序拋出“無法打開數據庫文件”。 如果我稍等片刻(從10到60秒),它將重新開始工作。 我不知道問題是Live SDK,IsolatedStorage還是其他問題,但是在我看來,上傳完成后文件仍在使用中是一個問題。 (對於它的價值,我不認為它嚴格是SQLite錯誤。)
我正在使用以下代碼(為簡便起見,將其編輯):
private void Upload() {
this._LiveClient.UploadProgressChanged += UploadProgressChanged;
this._LiveClient.UploadCompleted += UploadCompleted;
IsolatedStorageFileStream stream = null;
try {
using( IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication() ) {
stream = store.OpenFile( "mydatabasefile.dat", FileMode.Open, FileAccess.Read );
}
this._LiveClient.UploadAsync( "DestinationPath", "DestinationFilename.sqlite", true, stream, null );
} catch( Exception e ) {
MessageBox.Show( e.Message, "Error", MessageBoxButton.OK );
}
}
private void UploadCompleted( object sender, LiveOperationCompletedEventArgs e ) {
if( e.Error == null ) {
MessageBox.Show( "File successfully uploaded.", "Backup", MessageBoxButton.OK );
if( this.NavigationService.CanGoBack ) this.NavigationService.GoBack();
} else {
MessageBox.Show( e.Error.Message, "Upload Error", MessageBoxButton.OK );
}
}
向后導航(它將始終是我的主頁)之后,我嘗試執行的所有需要數據庫訪問的操作(例如,導航至我的視圖頁面並顯示記錄)都會引發錯誤(再次,直到我稍等片刻)。
我不確定是否需要在某處使用Close語句,甚至不確定是否需要循環檢查文件的狀態,直到文件關閉為止。
您需要做的是添加stream.Dispose();
在UploadCompleted中,這應該可以解決您的問題(唯一要記住的是,您將無法在上傳期間訪問數據庫,如果您需要這樣做,那么您將需要創建Db文件的副本上載之前)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.