我遇到这样的情况:只要应用程序启动,我就必须调用Web服务将未保存的数据发送回服务器,同时我继续访问应用程序。我应该能够导航到不同的视图,执行UI任务。 我可以使用任务
Task CallWebService()
{
return Task.Factory.StartNew(() => {
// make your service call.
});
}
CallWebService().ContinueWith(task => {
if(task.isFaulted)
throw new AggregateException(task.Exception.InnerException.Message);
// Runs when the task is finished
InvokeOnMainThread(() => {
// Hide your activity indicator here.
StopActivityIndicator();
});
});
我不知道在哪里调用InvokeOnMainThread,因为用户可以在任何视图上。我们如何处理。
答案 0 :(得分:0)
我会将下载程序创建为带有事件处理程序的静态类(或使用依赖项解析程序)。在您的视图中,控制器会覆盖ViewDidAppear和ViewDidDisappear,您将在其中订阅和取消订阅事件。
答案 1 :(得分:0)
在AppDelegate.cs中,您可以将“任务”添加到FinishedLaunching覆盖和OnActivated覆盖,假设您有办法确定是否有任何“未保存”的数据需要发送到服务器。
public override void OnActivated (UIApplication application)
{
}
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
}