我想知道远程设备调用后台任务的限制是什么.我在微软的文档中发现的只是后台任务的一般限制,即30秒.
但我的简单测试表明,从其他设备调用的应用服务并非如此.(我不确定常规应用程序服务.我没有在测试中包含它们)
这是我的测试方法:
我将此代码放入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));
}
Run Code Online (Sandbox Code Playgroud)
(而且我推迟了,因此操作不会意外关闭任务await)
我得到了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;
}
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个连接并从另一个设备向此后台任务发送了一些数据(使用Rome API)
这一次,它在30秒之前没有停止.我的循环是100迭代,我得到了祝酒,表明后台任务没有停止,并且能够运行~500秒.
但这是我的循环,它可能会继续更长的循环.
这是预期的行为吗?从远程设备调用的AppService后台任务的确切限制是什么?
更新:似乎远程应用程序(调用此后台任务的人)必须保持打开状态.(可能是因为连接对象应该保持活着?).如果我关闭它,后台应用程序服务将在几秒钟后终止.
这是预期的行为吗?从远程设备调用的AppService后台任务的确切限制是什么?
是.应用服务的生命周期很长.它不限于30秒.如果暂停调用应用程序,应用程序赞助的应用程序服务将被终止.它也没有内存限制,但如果机器本身的资源不足,可能会导致启动失败或服务终止.
您可以从channel9上的视频中获取更多详细信息:App-to-App Communication:构建应用Web
| 归档时间: |
|
| 查看次数: |
693 次 |
| 最近记录: |