我正在尝试PeriodicTask
在我的应用程序中使用 a ,但在调用OnInvoke()
带有此异常的方法之前它失败了
System.IO.FileNotFoundException
无法加载文件或程序集“LockscreenAgent,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。
这是我的代码(我省略了ScheduledAgent
's 的代码,因为它甚至在创建它之前就失败了!):
(应用程序.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>
有什么猜测吗?