Xamarin.Ios BeingBackgroundTask 参数
Posted
技术标签:
【中文标题】Xamarin.Ios BeingBackgroundTask 参数【英文标题】:Xamarin.Ios BeingBackgroundTask parameters 【发布时间】:2022-01-19 09:32:21 【问题描述】:我正在尝试来自 Xamarin 的这段代码。后台任务的 ios 文档:https://docs.microsoft.com/en-us/xamarin/ios/app-fundamentals/backgrounding/ios-backgrounding-techniques/ios-backgrounding-with-tasks。它表示 第 6 行 中的变量taskId
具有CS0841: Cannot use local variable 'taskId' before it is declared
。我应该如何分配taskId
?另外,你如何声明myFlag
?我找不到任何关于如何使用这个变量的描述。
Task.Factory.StartNew( () =>
//expirationHandler only called if background time allowed exceeded
var taskId = UIApplication.SharedApplication.BeginBackgroundTask(() =>
Console.WriteLine("Exhausted time");
UIApplication.SharedApplication.EndBackgroundTask(taskId);
);
while(myFlag == true)
Console.WriteLine(UIApplication.SharedApplication.BackgroundTimeRemaining);
myFlag = SomeCalculationNeedsMoreTime();
//Only called if loop terminated due to myFlag and not the expiration of time
UIApplication.SharedApplication.EndBackgroundTask(taskId);
);
【问题讨论】:
是的,我已经解决了 【参考方案1】:这是正确的链接:iOS Backgrounding with Tasks。
我应该如何分配taskId?
正如链接中提到的,taskId
是注册过程中返回的唯一标识符,我们只需要在调用EndBackgroundTask
时传递它。
nint taskID = UIApplication.SharedApplication.BeginBackgroundTask( () => );
UIApplication.SharedApplication.EndBackgroundTask(taskId);
如何声明 myFlag?
如果结束后台任务,该变量只是表示标志,如果您不想停止任务,只需将其设置为true
。
【讨论】:
注意:有问题的代码是该文档页面上的一个 sn-ps 的精确副本。 In section Avoiding App Termination With Expiration Handlers。所以看起来文档页面 sn-p 是错误的,甚至不会编译。以上是关于Xamarin.Ios BeingBackgroundTask 参数的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.forms(或)xamarin.ios/xamarin.android(或)本机
Xamarin.Forms 是 Xamarin.Android、Xamarin.IoS 和 Xamarin.Win 的简单总和吗?