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 以来被覆盖

Xamarin iOS UINavigationBar 奇怪的覆盖

Xamarin Forms - iOS 上的键盘覆盖条目(文本字段)