我想知道远程设备调用的后台任务的局限性。我在微软文档中发现的所有内容都是30秒后台任务的通用限制。UWP中远程应用程序服务后台任务的局限性
但是我简单的测试表明,它不是从其他设备称为应用服务的情况。 (我不知道规则的应用服务,虽然我不包括他们在我的测试。)
这里是我的测试方法:
我把这个代码的应用程序的OnBackgroundActivated
并注册了TimeTrigger
后台任务。
for (int i = 0; i < 100; i++)
{
Common.ToastFunctions.SendToast((i * 5).ToString() + " seconds");
await System.Threading.Tasks.Task.Delay(TimeSpan.FromSeconds(5));
}
(而且我得到了延期所以任务将不会意外,因为await
操作关闭)
我Toast通知20-25秒,并没有什么之后。所以这个过程在30秒内被杀死,这与官方文件一致。
然后我把完全相同的代码在RequestReceived
事件我AppServiceConnection
的,而这种代码OnBackgroundActivated
(基本上设置RequestReceived
事件,并得到延期:
this._backgroundTaskDeferral = args.TaskInstance.GetDeferral();
args.TaskInstance.Canceled += OnTaskCanceled;
var details = args.TaskInstance.TriggerDetails as AppServiceTriggerDetails;
if (details?.Name == "com.ganjine") //Remote Activation
{
_appServiceconnection = details.AppServiceConnection;
_appServiceconnection.RequestReceived += OnRequestReceived;
_appServiceconnection.ServiceClosed += AppServiceconnection_ServiceClosed;
}
然后我创建一个连接并发送了一些数据从这个后台任务从另一个设备(使用罗马APIs)
这一次,它没有停止30秒之前。我的循环是100
迭代,我得到了敬酒指示后台任务没有停止,是能够运行〜500秒。
但是,这是我的循环,它可能还有一个更长的循环更持续更多的。
这是预期的行为?从远程设备调用的AppService后台任务的确切限制是什么?
更新:似乎远程应用程序(谁调用此后台任务)需要保持打开状态。 (可能是因为连接对象应该保持活着?)。如果关闭它,后台应用程序服务将在几秒钟后终止。
所以在手机上的应用程序服务将保留没有时间限制的开放,只要从PC调用者的应用程序保持打开状态,对不对? (除非电话因资源不足而终止服务) –
@MahdiGhiasi是的。 –