Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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# ApplicationData.Current.LocalFolder GetFile同步_C#_Xamarin_Uwp - Fatal编程技术网

C# ApplicationData.Current.LocalFolder GetFile同步

C# ApplicationData.Current.LocalFolder GetFile同步,c#,xamarin,uwp,C#,Xamarin,Uwp,我需要在程序启动时创建一个数据库/检查其存在性 public async Task CopyDatabaseIfNotExists(string dbPath) { var nExpectedFolder = IsolatedStorageFile.GetUserStoreForApplication(); try { await ApplicationData.Current.LocalFolder.Ge

我需要在程序启动时创建一个数据库/检查其存在性

public async Task CopyDatabaseIfNotExists(string dbPath)
{
    var nExpectedFolder = IsolatedStorageFile.GetUserStoreForApplication();

            try
            {
                await ApplicationData.Current.LocalFolder.GetFileAsync(dbPath); //nExpectedFolder.GetFileAsync(dbPath);/// ApplicationData.Current.LocalFolder.GetFileAsync("preinstalledDB.db");
                // No exception means it exists
                return;
            }
            catch (System.IO.FileNotFoundException)
            {
                // The file obviously doesn't exist
            }

        (... some other stuff)
在此测试完成之前,我的应用程序不能也不应该运行

因此,我想将调用更改为同步

然而,我只看到

ApplicationData.Current.LocalFolder.GetFileAsync
.GetFile不存在


使调用同步的方法是什么?

您可以使用
System.IO
中的.NET API同步读取文件。您可以从
LocalFolder
获取
StorageFolder.Path
属性,并将路径名传递给.NET


采用
路径
模式
,从中可以同步或异步读写。

您可以使用
System.IO
中的.NET API同步读取文件。您可以从
LocalFolder
获取
StorageFolder.Path
属性,并将路径名传递给.NET


采用
路径
模式
,从那里可以同步或异步读写。

异步没有问题

例如,如果你做任何事情都是异步的

private async void DoThis()
{
   await SomethingA();
   await SomethingB();

   return;
}
然后,您可以确保在等待SomethingA()之前永远不会调用SomethingB()


这就是为什么在子例程中执行异步操作后,必须执行所有异步操作的原因。

异步没有问题

例如,如果你做任何事情都是异步的

private async void DoThis()
{
   await SomethingA();
   await SomethingB();

   return;
}
然后,您可以确保在等待SomethingA()之前永远不会调用SomethingB()


这就是为什么在子例程中执行异步操作后,您必须执行所有异步操作的原因。

我认为正确的处理方法是在该方法的调用方法中使用wait。在使用之前,还要等待调用方法,直到从构造函数调用为止。或者使用“async void”方法调用它(如果必须),它将同步运行它。[link]我认为正确的处理方法是在这个方法的调用方法中使用wait。在使用之前,还要等待调用方法,直到从构造函数调用为止。或者使用“async void”方法调用它(如果必须),它将同步运行它。[链接]我想我已经试过了。你能发布“ApplicationData.Current.LocalFolder.GetFileAsync(dbPath);”的等效代码吗?我想我已经试过了。您能发布“ApplicationData.Current.LocalFolder.GetFileAsync(dbPath);”的等效代码吗?