Приложение вылетает.KeyException? - PullRequest
3 голосов
/ 17 января 2012

Я получаю отчеты о сбоях из своего приложения.Я действительно не понимаю, в чем проблема.Это никогда не падает со мной ... В чем может быть проблема?Из сообщения об ошибке концентратора приложения:

0 coredll.dll xxx_RaiseException 19<br> 1 mscoree3_7.dll 436488<br> 2 mscoree3_7.dll 386545<br> 3 mscoree3_7.dll 540936<br> 4 TransitionStub 0<br> 5 System.ThrowHelper.ThrowKeyNotFoundException 52<br> 6 System.Collections.Generic.Dictionary 2.get_Item 136<br> 7 System.IO.IsolatedStorage.IsolatedStorageSettings.get_Item 80<br> 8 ScheduledTaskAgent1.ScheduledAgent.OnInvoke 660<br> 9 Microsoft.Phone.Scheduler.ScheduledTaskAgent.Invoke 856<br> 10 .AgentRequest.Invoke 764<br> 11 Microsoft.Phone.BackgroundAgentDispatcher.InvocationThread 196<br> 12 System.Threading.ThreadHelper.ThreadStartHelper 132<br> 13 System.Threading.ThreadHelper.ThreadStart_Context 80<br> 14 System.Threading.ExecutionContext.Run 324<br> 15 System.Threading.ThreadHelper.ThreadStartHelper 168<br> 16 mscoree3_7.dll 429164<br> 17 mscoree3_7.dll 310125<br> 18 mscoree3_7.dll 310319<br> 19 mscoree3_7.dll 305995"

1 Ответ

8 голосов
/ 17 января 2012

Похоже, что BackgroundAgent пытается загрузить элемент из IsolatedStorageSettings.ApplicationSettings, который не существует.Проверьте ваш метод ScheduledTaskAgent1.ScheduledAgent.OnInvoke.

1 / Сначала проверьте наличие ключа, используя метод «IsolatedStorageSettings.ApplicationSettings.Contains», прежде чем получить его

2 / Если ключ делаетне существует, действуйте соответственно

Например, если вы делаете:

somevalue = IsolatedStorageSettings.ApplicationSettings["setting"];

Тогда «настройка» - это ключ, на который ссылается сообщение об ошибке.Замените ваш код на:

if (IsolatedStorageSettings.ApplicationSettings.Contains("setting"))
{
    somevalue = IsolatedStorageSettings.ApplicationSettings["setting"];
}else
{
    // set somevalue to its default value
}
...