Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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# winRT存储文件问题 publicstaticasync任务SaveFileAsync(字符串文件名,T数据) { MemoryStream memStream=新的MemoryStream(); DataContractSerializer serializer=新的DataContractSerializer(typeof(T)); serializer.WriteObject(memStream,data); StorageFile file=Wait ApplicationData.Current.LocalFolder.CreateFileAsync(文件名, CreationCollisionOption.ReplaceExisting); 使用(Stream-Stream=await file.OpenStreamForWriteAsync()) { memStream.Seek(0,SeekOrigin.Begin); 等待memStream.CopyToAsync(流); 等待stream.FlushAsync(); } } 公共静态异步任务RestoreFileAsync(字符串文件名) { T结果=默认值(T); 尝试 { StorageFile file=Wait ApplicationData.Current.LocalFolder.GetFileAsync(文件名); 使用(IInputStream inStream=wait file.OpenSequentialReadAsync()) { DataContractSerializer serializer=新的DataContractSerializer(typeof(T)); 结果=(T)serializer.ReadObject(inStream.AsStreamForRead()); 返回结果; } } 捕获(FileNotFoundException) { 返回默认值(T); } }_C#_Windows 8_Winrt Xaml_C# 5.0 - Fatal编程技术网

C# winRT存储文件问题 publicstaticasync任务SaveFileAsync(字符串文件名,T数据) { MemoryStream memStream=新的MemoryStream(); DataContractSerializer serializer=新的DataContractSerializer(typeof(T)); serializer.WriteObject(memStream,data); StorageFile file=Wait ApplicationData.Current.LocalFolder.CreateFileAsync(文件名, CreationCollisionOption.ReplaceExisting); 使用(Stream-Stream=await file.OpenStreamForWriteAsync()) { memStream.Seek(0,SeekOrigin.Begin); 等待memStream.CopyToAsync(流); 等待stream.FlushAsync(); } } 公共静态异步任务RestoreFileAsync(字符串文件名) { T结果=默认值(T); 尝试 { StorageFile file=Wait ApplicationData.Current.LocalFolder.GetFileAsync(文件名); 使用(IInputStream inStream=wait file.OpenSequentialReadAsync()) { DataContractSerializer serializer=新的DataContractSerializer(typeof(T)); 结果=(T)serializer.ReadObject(inStream.AsStreamForRead()); 返回结果; } } 捕获(FileNotFoundException) { 返回默认值(T); } }

C# winRT存储文件问题 publicstaticasync任务SaveFileAsync(字符串文件名,T数据) { MemoryStream memStream=新的MemoryStream(); DataContractSerializer serializer=新的DataContractSerializer(typeof(T)); serializer.WriteObject(memStream,data); StorageFile file=Wait ApplicationData.Current.LocalFolder.CreateFileAsync(文件名, CreationCollisionOption.ReplaceExisting); 使用(Stream-Stream=await file.OpenStreamForWriteAsync()) { memStream.Seek(0,SeekOrigin.Begin); 等待memStream.CopyToAsync(流); 等待stream.FlushAsync(); } } 公共静态异步任务RestoreFileAsync(字符串文件名) { T结果=默认值(T); 尝试 { StorageFile file=Wait ApplicationData.Current.LocalFolder.GetFileAsync(文件名); 使用(IInputStream inStream=wait file.OpenSequentialReadAsync()) { DataContractSerializer serializer=新的DataContractSerializer(typeof(T)); 结果=(T)serializer.ReadObject(inStream.AsStreamForRead()); 返回结果; } } 捕获(FileNotFoundException) { 返回默认值(T); } },c#,windows-8,winrt-xaml,c#-5.0,C#,Windows 8,Winrt Xaml,C# 5.0,我正在使用这段代码来保存和检索我的数据,它工作得很好。 有时我启动我的应用程序,突然所有的数据都被删除了,我真的不知道为什么。 我尝试了DataContractJsonSerializer并将其保存为.txt文件,但仍然存在相同的问题。 没有例外或错误。 我还检查了文件本身,其中.xml和.txt删除了所有内容。 实际上我很困惑。像这样的问题通常是一个锁定问题。当应用程序关闭且生成的文件为空时,您将打开流。这是意料之中的。有时,在创建竞争条件的多个单元测试中使用异步操作。这是意料之中的。可以通过

我正在使用这段代码来保存和检索我的数据,它工作得很好。 有时我启动我的应用程序,突然所有的数据都被删除了,我真的不知道为什么。 我尝试了
DataContractJsonSerializer
并将其保存为.txt文件,但仍然存在相同的问题。 没有例外或错误。 我还检查了文件本身,其中.xml和.txt删除了所有内容。
实际上我很困惑。

像这样的问题通常是一个锁定问题。当应用程序关闭且生成的文件为空时,您将打开流。这是意料之中的。有时,在创建竞争条件的多个单元测试中使用异步操作。这是意料之中的。可以通过锁定线程来解决此问题


阅读本文,看看它是否对您有所帮助:我真的希望它能帮助您。

您在单元测试中看到这种行为了吗?在我的场景中,他们总是得到一个新的本地文件夹。删除内容时,ApplicationData.Current.LocalFolder是否会更改?你在写简单文本时有问题吗?是的,当内容被删除时,本地文件夹会发生更改,我没有任何其他问题,没有错误,也没有例外,有时不总是它会删除它。仔细研究后,如果我在appxmanifest中更改任何内容,所有内容都会重新安装,但这也不是问题所在。我一直在测试这个应用程序,是不是因为我经常从VisualStudio运行这个应用程序?我想是的。我在单元测试中有这种行为,而不是在正在运行的应用程序中。您是从仿真器、本地pc还是远程pc开始?这有什么变化吗?我一直在用所有东西测试我的应用程序,这就是保存行为。
    public static async Task SaveFileAsync(string FileName, T data)
    {
        MemoryStream memStream = new MemoryStream();
        DataContractSerializer serializer = new DataContractSerializer(typeof(T));
        serializer.WriteObject(memStream, data);

        StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(FileName,
            CreationCollisionOption.ReplaceExisting);
        using (Stream stream = await file.OpenStreamForWriteAsync())
        {
            memStream.Seek(0, SeekOrigin.Begin);
            await memStream.CopyToAsync(stream);
            await stream.FlushAsync();
        }
    }

    public static async Task<T> RestoreFileAsync(string FileName)
    {
        T result = default(T);
        try
        {
            StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(FileName);
            using (IInputStream inStream = await file.OpenSequentialReadAsync())
            {
                DataContractSerializer serializer = new DataContractSerializer(typeof(T));
                result = (T)serializer.ReadObject(inStream.AsStreamForRead());
                return result;
            }
        }

        catch (FileNotFoundException)
        {
            return default(T);
        }
    }