Xamarin - 覆盖函数中的 iOS 异步任务
Posted
技术标签:
【中文标题】Xamarin - 覆盖函数中的 iOS 异步任务【英文标题】:Xamarin - iOS Async Task in an override function 【发布时间】:2017-02-14 15:22:57 【问题描述】:我想对 REST API 进行服务调用以检查值,如果为真,则将用户带到新页面。我不想展示一个视图控制器,我只想使用一个我已经连接好的segue。
检查值的服务调用是异步任务,我在 segue 尝试触发时调用它(当用户按下按钮时)
public override bool ShouldPerformSegue(string segueIdentifier, NSObject sender)
.. run check here, and return true or false to fire the segue
问题是 C# 希望我将此方法修改为 async Task 或 async void 或 async Task ,但这会破坏“覆盖”,因为我不再覆盖。
使用异步编程处理调用的正确方法是什么,然后在调用完成后将用户带走?
非常感谢。
【问题讨论】:
【参考方案1】:您可以尝试在 Task
中启动您的方法,完成后将用户带走。
例子:
var someTask = Task.Run(async () =>
var EventModal = await Method();
await Navigation.PushAsync(Page(EventModal.Stuff));
);
【讨论】:
这个问题是你仍在执行一些异步操作,这可能会在某些时间出现问题。无论如何都应该避免在 shouldperform segue 中进行服务调用。以上是关于Xamarin - 覆盖函数中的 iOS 异步任务的主要内容,如果未能解决你的问题,请参考以下文章
我们可以覆盖 Xamarin.forms 中的 NAVIGATION BACK BUTTON 按下吗?
NSURLSession 下载任务 - Xamarin iOS F#
如何覆盖 Xamarin.IOS UIButton 的 LayoutSublayersOfLayer 行为?
Xamarin.Forms NavigationBar 颜色自 iOS 4.6 以来被覆盖