gpt4 book ai didi

c# - WinRT IBackgroundTask 无法运行

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:14 25 4
gpt4 key购买 nike

我创建了一个 IBackgroundTask,当它运行时,它终止了应用程序并且 Visual Studio 停止了调试。我找不到一种方法来查看是什么原因造成的。我打开了 Break when an exception is: CLR Exceptions: Thrown 并且它没有中断。我如何找出导致此错误的原因?

list :

<Extension Category="windows.backgroundTasks" EntryPoint="Path.To.Task">
<BackgroundTasks>
<Task Type="systemEvent" />
</BackgroundTasks>
</Extension>

任务:

public class Task : IBackgroundTask
{
public async void Run( IBackgroundTaskInstance taskInstance )
{
var classA = ServiceLocator.Current.GetInstance<ClassA>();
var classB = ServiceLocator.Current.GetInstance<ClassB>();

var deferral = taskInstance.GetDeferral();

if( classB.Id > 0 )
{
await classA.DoStuff( classB.Id );
}

deferral.Complete();
}
}

注册:

var trigger = new MaintenanceTrigger( 15, false );
BackgroundTaskRegistrar.RegisterBackgroundTask( "Path.To.Task", "Task Name", trigger, null );

任务注册器:

public static BackgroundTaskRegistration RegisterBackgroundTask( string taskEntryPoint, string name, IBackgroundTrigger trigger, IBackgroundCondition condition )
{
foreach( var pair in BackgroundTaskRegistration.AllTasks )
{
if( pair.Value.Name == name )
{
return (BackgroundTaskRegistration)pair.Value;
}
}

var builder = new BackgroundTaskBuilder
{
Name = name,
TaskEntryPoint = taskEntryPoint
};
builder.SetTrigger( trigger );
if( condition != null )
{
builder.AddCondition( condition );
}

var task = builder.Register();

return task;
}

更新

我把tasks里面的代码都注释掉了,然后就死了,看来和task里面的代码没关系。

解决方案

通过启用此处指定的事件查看器中的日志记录,我能够找到错误是什么。 http://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj542416.aspx

解决我的问题的方法是将任务放入单独的程序集中并将实现 IBackgroundTask 的类标记为 sealed

最佳答案

正如我所尝试的那样,为了让您的代码运行,我只需要在我的主项目中将 Reference 添加到 RuntimeComponent(带有 BackgroundTask)。

enter image description here

请注意(您现在可能已经)为 MSDN stands :

Background tasks that use a maintenance trigger run only when the system is connected to AC power.

关于c# - WinRT IBackgroundTask 无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com