2013-06-21 5 views
0

Я делаю приложение, в котором использование вводит значения в два раза (starthour, startminute, endhour, endminute). Я написал функцию, которая сохраняет значения, а затем проверяет значение и помещает значения внутри текстовых полей. Однако он не работает, и я не уверен, почему. Я принимаю его ошибку с моей стороны, но я не совсем уверен. Вот код:ApplicationData.LocalSettings не хранит данные?

 public async Task savedata() 
    { 
     while (true) 
     { 
      var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 

      localSettings.Values["starthour1"] = starthour1.Text; 
      localSettings.Values["starthour2"] = starthour2.Text; 
      localSettings.Values["starthour3"] = starthour3.Text; 
      localSettings.Values["starthour4"] = starthour4.Text; 
      localSettings.Values["starthour5"] = starthour5.Text; 
      localSettings.Values["starthour6"] = starthour6.Text; 
      localSettings.Values["starthour7"] = starthour7.Text; 

      localSettings.Values["startminute1"] = startminute1.Text; 
      localSettings.Values["startminute2"] = startminute2.Text; 
      localSettings.Values["startminute3"] = startminute3.Text; 
      localSettings.Values["startminute4"] = startminute4.Text; 
      localSettings.Values["startminute5"] = startminute5.Text; 
      localSettings.Values["startminute6"] = startminute6.Text; 
      localSettings.Values["startminute7"] = startminute7.Text; 

      localSettings.Values["endhour1"] = endhour1.Text; 
      localSettings.Values["endhour2"] = endhour2.Text; 
      localSettings.Values["endhour3"] = endhour3.Text; 
      localSettings.Values["endhour4"] = endhour4.Text; 
      localSettings.Values["endhour5"] = endhour5.Text; 
      localSettings.Values["endhour6"] = endhour6.Text; 
      localSettings.Values["endhour7"] = endhour7.Text; 

      localSettings.Values["endminute1"] = endminute1.Text; 
      localSettings.Values["endminute2"] = endminute2.Text; 
      localSettings.Values["endminute3"] = endminute3.Text; 
      localSettings.Values["endminute4"] = endminute4.Text; 
      localSettings.Values["endminute5"] = endminute5.Text; 
      localSettings.Values["endminute6"] = endminute6.Text; 
      localSettings.Values["endminute7"] = endminute7.Text; 

      //get data 
      Object starthour1o = localSettings.Values["starthour1"]; 

      if (starthour1o == null) 
      { 
       // No data 
      } 
      else 
      { 
       starthour1.Text = starthour1o.ToString(); 
      } 
      Object starthour2o = localSettings.Values["starthour2"]; 

      if (starthour2o == null) 
      { 
       // No data 
      } 
      else 
      { 
       starthour2.Text = starthour2o.ToString(); 
      } 
      Object starthour3o = localSettings.Values["starthour3"]; 

      if (starthour3o == null) 
      { 
       // No data 
      } 
      else 
      { 
       starthour3.Text = starthour3o.ToString(); 
      } 
      Object starthour4o = localSettings.Values["starthour4"]; 

      if (starthour4o == null) 
      { 
       // No data 
      } 
      else 
      { 
       starthour4.Text = starthour4o.ToString(); 
      } 
      Object starthour5o = localSettings.Values["starthour5"]; 

      if (starthour5o == null) 
      { 
       // No data 
      } 
      else 
      { 
       starthour5.Text = starthour5o.ToString(); 
      } 
      Object starthour6o = localSettings.Values["starthour6"]; 

      if (starthour6o == null) 
      { 
       // No data 
      } 
      else 
      { 
       starthour6.Text = starthour6o.ToString(); 
      } 
      Object starthour7o = localSettings.Values["starthour7"]; 

      if (starthour7o == null) 
      { 
       // No data 
      } 
      else 
      { 
       starthour7.Text = starthour7o.ToString(); 
      } 

      await Task.Delay(10); 
     } 
    } 
+0

Когда вы говорите: «Это не работает», как он не работает, он бросает ошибку, сохраняет ли значения никогда не сохраняет программу? –

+0

Это была единственная документация, которую я мог найти: http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.applicationdata.localsettings.aspx –

+0

Приложение работает нормально, но если я вхожу в номер (скажем 2) и закрыть приложение, когда я снова открываю приложение 2, там нет. –

ответ

1

Две вещи, которые нужно сделать, сначала нужно явно сохранить настройки для их настаиваться по телефону Save(). Где-то в вашем коде вам нужно сделать localSettings.Save(), и он должен работать.

2-й, если вы сохранили настройки, первое, что делает ваш код, это перезаписать их текущими значениями текстовых полей, а весь верхний раздел, где он находится localSettings.Values["Foo"] = Foo.Text, должен быть перемещен в нижнюю часть.

Как побочный комментарий, вам действительно нужно обновлять свой код каждые 10 миллисекунд? Это собирается съесть ТОН ресурсов в вашей программе. Гораздо более обычный подход - загрузить значения при запуске, а затем сохранить их при выключении.

+0

Хорошо, это не позволит мне поставить localSettings.Save(). В нем говорится, что сохранение не определено. Я сделал # 2. И для №3 это очень ранняя сборка, и я сейчас просто экспериментирую. –

+0

Я просто добавил, что вы используете [этот класс] (http://msdn.microsoft.com/en-US/library/windows/apps/windows.storage.applicationdatacontainer), а не [этот класс] (http: // msdn. microsoft.com/en-us/library/system.configuration.applicationsettingsbase.aspx). Вы работаете с файлами приложений Windows. Я не знаю, как с этим справиться. –

+0

Хорошо, спасибо в любом случае. –