C# WP8:后台代理和App wire存储文件之间的通信?

C# WP8:后台代理和App wire存储文件之间的通信?,c#,windows-phone-8,isolatedstorage,background-agent,C#,Windows Phone 8,Isolatedstorage,Background Agent,我正在尝试编写一个简单的天气应用程序作为我的第一个应用程序。 我必须尽量减少http请求的数量,因此我在应用程序中使用isolatedStorageSetting来保存请求的数据以及上次请求的日期和时间。在应用程序启动一个请求之前,它会在这个文件中询问最后一个请求是什么时候,如果120分钟过去了,它会启动一个新的请求。 所有这些在应用程序中都能很好地工作,但现在我必须执行一项计划任务来更新实时互动程序并在后台锁定屏幕。但是,在后台代理请求数据之前,它必须查看此文件以请求最后一次更新,并在请求后重

我正在尝试编写一个简单的天气应用程序作为我的第一个应用程序。 我必须尽量减少http请求的数量,因此我在应用程序中使用isolatedStorageSetting来保存请求的数据以及上次请求的日期和时间。在应用程序启动一个请求之前,它会在这个文件中询问最后一个请求是什么时候,如果120分钟过去了,它会启动一个新的请求。 所有这些在应用程序中都能很好地工作,但现在我必须执行一项计划任务来更新实时互动程序并在后台锁定屏幕。但是,在后台代理请求数据之前,它必须查看此文件以请求最后一次更新,并在请求后重写数据。 因此,我需要的是一个文件,可以用于读取和写入的应用程序和后台代理。我现在需要一个互斥体和wo on。。。但我的问题是

  • 对于这种情况,正确的文件或数据库类型是什么?(隔离组织设置、隔离组织文件或其他内容)

  • 我必须在哪里生成此文件?(在MainPage.xaml.cs中,还是我需要一个类库项目)

  • 如何从应用程序和后台代理读取和写入此文件中的条目

  • 好的,我现在有这个例子,作为一步一步理解洞主题的测试

  • 我有一个类库“DataLib”,其中包含以下内容:

    命名空间数据库 { 公共类数据库 {

    } }

  • 我的应用程序本身带有MainPage.xaml.cs,其中包含对DataLib的引用,并包含以下内容:

    使用数据库

  • 这一行产生了一个错误。我只是不想在文本框“txt\u Test”中显示生成的字符串。我的错在哪里

  • 使用隔离存储。用互斥来保护它,就不会有问题了
  • 在需要的地方生成它
  • 最简单的方法是
  • 2:设置访问:

    public new static App Current
    {
        get
        {
            return (App)Application.Current;
        }
    }
    
    static public MySettings mySettings = new MySettings();
    
    现在,您可以通过以下方式访问所需的设置:

    App.Current.mySettings.Save() // Load() ... etc.
    

    您可以在应用程序中保存设置,并通过将文件保存到IsolatedStorage,使后台代理可以访问这些设置。我使用JSON.Net保存和读取文件。我总是将我的设置保存在我的存储器的\Shared\中。这样我知道我可以随时访问它。我创建了一个用于存储和读取这些信息的类,名为。使用这个类你可以很容易地保存你的设置。我将在我的设置中创建一个保存和加载方法,以便可以使用当前信息读取和更新它们

    public class AppSettings
    {
        public bool SomeProp { get; set; }
        public double AnotherProp { get; set;}
    
        public void Save()
        {
            FileStorage.WriteSharedData("Settings.txt", this);
        }
    
        public static AppSettings Load()
        {
            return FileStorage.ReadSharedData<AppSettings>("Settings.txt");
        }
    }
    
    公共类AppSettings
    {
    公共bool SomeProp{get;set;}
    公共双另一个属性{get;set;}
    公共作废保存()
    {
    FileStorage.WriteSharedData(“Settings.txt”,这是);
    }
    公共静态AppSettings加载()
    {
    返回FileStorage.ReadSharedData(“Settings.txt”);
    }
    }
    
    这个类有助于确保我可以访问文件和我的设置而没有任何问题


    我成功地为我的应用程序和后台代理使用了IsolatedStorage设置。如果内存是一个问题,我只使用IsolatedStorageSettings,因为我的另一个解决方案使用JSON.Net,它会消耗大量内存。

    谢谢1。三,。但我在任何地方都需要这个特定的文件,我不明白如果这个文件不是在当前上下文中生成的,我如何才能访问它。你可以在需要的地方保存这个文件。您将其保存到isolatedstorage,此文件将可供应用程序和后台代理使用。要保存的数据可以放在单独的类中(例如)。这个类可以放在App.xaml.cs中,并具有适当的访问属性,它将在你的应用程序的所有页面上可用。这个“适当的访问属性”正是我不知道如何做的-但我现在有了方向,将尝试它-感谢2,如果你正在创建一个实用程序类(MySettings),它应该位于类库中。如果你把代码放在你的应用程序中,由于依赖关系的限制,你将无法从后台代理引用它。我想我必须从头开始。我创建了一个isoStorageFile
    IsolatedStorageFile FileName=IsolatedStorageFile.GetUserStoreForApplication()现在我必须在里面写一个刺。。。类似于
    FileName.Add(“DataField”、“ValueOfDataFieldAsString”)string variable=FileName.DataField中读取它;如果(variable==“ValueOfDataFieldAsString”){…action…}
    如果您能给我这个函数的确切语法,那将是一个很大的帮助。data Get方法的重载不包含0个参数。从此函数声明中删除参数
    DatenHolen(string DatenPacket)
    =>
    DatenHolen()
    并将
    字符串DatenPacket=string.Empty
    IsolatedStorageFile WetterDatenDatei之后…
    谢谢-但是如果我有一个异步类并且需要返回多个字符串,它看起来会怎么样?类似这样的
    公共异步静态任务DatenHolen()
    <代码>返回string1,string2
    一个问题太多了。有很多答案和评论。请完成此问题并打开新窗口。关于您的问题,最好为settings.Hiden gems;)创建一个类容器。谢谢你提供的有用的课程。我认为Load()中的行应该是.ReadSharedDataFixed!谢谢你的提醒
    App.Current.mySettings.Save() // Load() ... etc.
    
    public class AppSettings
    {
        public bool SomeProp { get; set; }
        public double AnotherProp { get; set;}
    
        public void Save()
        {
            FileStorage.WriteSharedData("Settings.txt", this);
        }
    
        public static AppSettings Load()
        {
            return FileStorage.ReadSharedData<AppSettings>("Settings.txt");
        }
    }