{ if(granted) { -6ren">
gpt4 book ai didi

c# - 是否有机会将 "wrap"这个 native iOS API 调用转换为异步/等待?

转载 作者:行者123 更新时间:2023-11-30 14:59:50 24 4
gpt4 key购买 nike

考虑这个 iOS 6 API 调用:

eventStore.RequestAccess(EKEntityType.Event, (granted, error) => {
if(granted)
{
events = this.GetLocalCalendarEvents(eventStore);
}});

我有一些访问日历和读取事件的代码。在 iOS5 上这很有效,但在 iOS6 上我必须先请求访问权限,如果获得许可,然后开始阅读。我想知道我是否可以以某种方式将其包装成 async/await 的组合以隐藏丑陋的委托(delegate)。

有什么想法吗?

最佳答案

您可以使用TaskCompletionSource:

public Task<bool> DoSomethingAsync()
{
var taskSource = new TaskCompletionSource<bool>();

//Call some asynchronous Apple API
NSSomeAppleApi.DoSomething(error =>
{
if (error != null)
taskSource.SetException(new Exception(error.LocalizationDescription));
else
taskSource.SetResult(true);
});

return taskSource.Task;
}

关于c# - 是否有机会将 "wrap"这个 native iOS API 调用转换为异步/等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16164662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com