簡體   English   中英

上載到SkyDrive后,“無法打開數據庫文件”

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM