我的应用程序因为FinishedLaunching方法而被杀死是我的应用程序繁重的工作,我的问题是如何在没有用户交互的情况下填充来自Web服务的数据应用程序,我的意思是数据必须来自WS到设备,以便应用程序可用。
有没有办法创建一个新的线程或后台工作,所以FinishedLaunching可以返回,但后台的iPhone仍然是联系Web服务并下载所需的数据??
一个例子非常有用。
答案 0 :(得分:5)
您可以使用C#异步调用,以MonoTouch的方式工作:
new Action(this.FetchDataFromWS).BeginInvoke(null, null);
但最佳做法是在主视图加载时从Web服务获取数据,而不是在FinishedLaunching中。
答案 1 :(得分:1)
与@Dimitris' answer类似,虽然我沉迷于语法糖,但你可以通过(任务并行库)[http://msdn.microsoft.com/en-us/library/dd460717.aspx]分离lambda。任务还具有各种奇妙的延续,上下文和错误处理机会。
using System.Threading.Tasks;
Task.Factory.StartNew(() => {
FetchDataFromWS();
});
我的Main.cs FinishedLoading
方法中有类似的代码。当我在调试运行中遇到一个断点,然后进行了侧面追踪并跑去吃午饭时,我回来时仍然在等我,因为FinishedLoading
早已回来了。公平警告:我还没有做过任何真实的事情。