在一个移动应用程序中,我有一个可能会很长的异步操作(多个异步网络调用分组在一个异步函数中)。
_myClassField = myClient.DoANumberOfNetworkCallsAsync();
我在应用启动时立即执行调用,然后显示闪屏界面和欢迎界面。仅在第一次用户交互(例如:按下按钮)时,最终等待任务,并使用户等待响应如果未准备就绪。
public async Task<object> GetMyLongAwaitedObjectAsync()
{
return await _myClassField;
}
这种方法可以被多次调用,可能来自UI线程和非UI线程。
这会导致问题吗?还是这是一种有效的模式?
DoANumberOfNetworkCallsAsync()
设为异步。你能展示一下在这个类中如何填充字段的方式吗? - Kosala Wasync void
事件处理程序中调用GetMyLongAwaitedObjectAsync()
,它也能正常工作吗?(我们不知道是谁在调用这个东西)-- 我认为处理程序会一直运行到此处的 await,然后返回到 UI 线程,直到任务完成... (?) - Code Jockey