2013-12-23 3 views
0

Я пытаюсь использовать PeriodicTask в мое приложение, но оно не перед вызовом метода OnInvoke() с этим исключениемFileNotFoundException при запуске PeriodicTask

System.IO.FileNotFoundException

Не удалось загрузить файл или сборка «LockscreenAgent, Culture = нейтраль, PublicKeyToken = null» или одна из его зависимостей. Система не может найти указанный файл.

Вот мой код (я опускаю код ScheduledAgent»потому, что он не еще до его создания!):

(App.xaml.cs)

pblic App(){ 
     (... default code ...) 
     InitializeAgent(); 
    } 

    private const string PeriodicTaskName = "LockscreenAgent"; 
    private PeriodicTask _periodicTask; 

    private async void InitializeAgent() 
    { 
     //Checks if we need to ask user's permission to set the lockscreen 
     if (!LockScreenManager.IsProvidedByCurrentApplication) 
     { 
      // If you're not the provider, this call will prompt the user for permission. 
      // Calling RequestAccessAsync from a background agent is not allowed. 
      await LockScreenManager.RequestAccessAsync(); 
     } 
     // User gave us permission, let's start the background agent! 
     if (!LockScreenManager.IsProvidedByCurrentApplication) return;    
     // Start the agent 
     StartPeriodicAgent(); 
    } 

    private void StartPeriodicAgent() 
    { 
     // is old task running, remove it 
     _periodicTask = ScheduledActionService.Find(PeriodicTaskName) as PeriodicTask; 
     if (_periodicTask != null) 
     { 
      try 
      { 
       ScheduledActionService.Remove(PeriodicTaskName); 
      } 
      catch (Exception) 
      { 
      } 
     } 
     // create a new task 
     _periodicTask = new PeriodicTask(PeriodicTaskName) 
     { 
      Description = "This is LockscreenPreview image provider app.", 
      ExpirationTime = DateTime.Now.AddDays(14) 
     }; 
     try 
     { 
      // add this to scheduled action service 
      ScheduledActionService.Add(_periodicTask); 
      // debug, so run in every 30 secs 
     #if DEBUG 
      ScheduledActionService.LaunchForTest(PeriodicTaskName, TimeSpan.FromSeconds(30)); 
      Debug.WriteLine("Periodic task is started: " + PeriodicTaskName); 
     #endif 
     } 
     catch (InvalidOperationException exception) 
     { 
      if (exception.Message.Contains("BNS Error: The action is disabled")) 
      { 
       // load error text from localized strings 
       MessageBox.Show("Background agents for this application have been disabled by the user."); 
      } 
      if (
       exception.Message.Contains(
        "BNS Error: The maximum number of ScheduledActions of this type have already been added.")) 
      { 
       // No user action required. The system prompts the user when the hard limit of periodic tasks has been reached. 
      } 
     } 
     catch (SchedulerServiceException) 
     { 
      // No user action required. 
     } 
    } 

(WMAppManifest. xaml)

<Tasks> 
    <DefaultTask Name="_default" NavigationPage="MainPage.xaml" /> 
    <ExtendedTask Name="BackgroundTask"> 
    <BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="LSAgent" Source="LockscreenAgent" Type="LockscreenAgent.ScheduledAgent" /> 
    </ExtendedTask> 
</Tasks> 
<Tokens> 
    ... 
</Tokens> 
<Extensions> 
    <Extension ExtensionName="LockScreen_Background" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" /> 
</Extensions> 

Любое предположение?

ответ

1

Я думаю, что LockscreenAgent.dll нет в каталоге приложения, развернутого на телефоне. В вашем решении есть ли проект, содержащий передний план, ссылку на проект, содержащий фоновый агент? Если это так, проверьте свойства этой ссылки, чтобы Copy Local установил значение true. Также проверьте, правильно ли указан путь к DLL.

0

В моем случае я изменил название периодического проекта задачи. В результате в папке Bin/Debug сборка имеет старое имя. Причина в том, что я забыл имя сборки смены и пространство имен по умолчанию в свойствах заданных задач задачи. Когда я это сделал, имя сборки было правильным и исчезло System.IO.FileNotFoundException.

See image

Смежные вопросы