我有一种情况,应用程序启动后,我必须调用Web服务以将未保存的数据发回服务器,同时继续访问应用程序。我应该能够导航到不同的视图,执行UI任务。 我可以使用任务在访问UI时在后台调用Web服务
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因为用户可以在任何观点。我们如何处理这个问题。
你是什么意思,你不知道在哪里打电话给它?就像在什么文件中,什么方法,应用程序的哪一部分? – valdetero
我不知道如何处理它。我的逻辑是每2分钟检查一次数据库中是否有任何未保存的内容,如果有,请在后台调用Web服务而不影响用户活动。因为在调用Web服务时用户可以在任何视图中。那么在InvokeOnMainThread()中,我不知道哪个主要的UI线程。 – User382
您可以从后台线程调用InvokeOnMainThread。你为什么关心哪个视图是活动的?你有什么问题?当线程完成时你想做什么 - 停止活动指示器?或者是其他东西? – Jason