Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在使用同步文件_C#_Visual Studio_Sqlite_Microsoft Metro_Windows Store Apps - Fatal编程技术网

C# 正在使用同步文件

C# 正在使用同步文件,c#,visual-studio,sqlite,microsoft-metro,windows-store-apps,C#,Visual Studio,Sqlite,Microsoft Metro,Windows Store Apps,我想在数据库管理程序中使用自动同步功能。如果数据库文件被更改,自动同步会自动将其上载到云 我的问题是,数据库总是使用数据库文件,而上传方法无法访问该文件 守则: 文件名为main.db 在insert和BackgroundUploadAsync方法中使用 public static async void InsertToDatabase(object data) { SQLiteAsyncConnection conn = new SQLiteAsy

我想在数据库管理程序中使用自动同步功能。如果数据库文件被更改,自动同步会自动将其上载到云

我的问题是,数据库总是使用数据库文件,而上传方法无法访问该文件

守则:

文件名为main.db

在insert和BackgroundUploadAsync方法中使用

  public static async void InsertToDatabase(object data)
        {

            SQLiteAsyncConnection conn = new SQLiteAsyncConnection("Main.db");
            await conn.InsertAsync(data);//i cant close the file in async methode
        }

  public async static void AutoSync()
{
....

if (file != null)
                    {

                        var progressHandler = new Progress<LiveOperationProgress>(
                            (progress) => { /*pr.Value = progress.ProgressPercentage;*/ });
                        SettingsFlyout1.ctsUpload = new System.Threading.CancellationTokenSource();
                        LiveConnectClient liveClient = new LiveConnectClient(app.Session);

                        await liveClient.BackgroundUploadAsync(result, file.Name, file, OverwriteOption.Overwrite, SettingsFlyout1.ctsUpload.Token, progressHandler);
                    }
}


private async void Button_Click(object sender, RoutedEventArgs e)
        {

    InsertToDatabase(adat);
    AutoSync();//file not found exception,

    }
公共静态异步void InsertToDatabase(对象数据)
{
SQLiteAsyncConnection conn=新的SQLiteAsyncConnection(“Main.db”);
wait conn.InsertAsync(data);//我无法用异步方法关闭文件
}
公共异步静态void AutoSync()
{
....
如果(文件!=null)
{
var progressHandler=新进度(
(progress)=>{/*pr.Value=progress.ProgressPercentage;*/});
setingsflyout1.ctsUpload=new System.Threading.CancellationTokenSource();
LiveConnectClient liveClient=新的LiveConnectClient(app.Session);
等待liveClient.BackgroundUploadAsync(结果、文件名、文件、OverwriteOption.Overwrite、设置fLyout1.ctsUpload.Token、progressHandler);
}
}
专用异步无效按钮\u单击(对象发送方,路由目标)
{
插入数据库(adat);
AutoSync();//未找到文件异常,
}

谢谢您的帮助或任何建议

这在空间方面可能并不理想,但您可以创建两个数据库文件。一个
在用
,一个
在休息

每次写入(或一组写入)后,将使用中的
复制到静止的
上,然后再将更多条目写入数据库。您可能需要断开连接,然后在复制后重新连接。这应该是一个非常快速的操作(比上传要快得多)

然后,当您需要上传时,从静止的
版本流式传输

您需要在静止时对
进行读/写锁定
,但至少可以在不受internet连接限制的情况下对正在使用的
进行读/写操作