【发布时间】:2018-07-13 14:33:31
【问题描述】:
我有一个 Xamarin Forms 项目并实现了一个依赖服务来发送 SMS,但我不知道如何将设备无关的回调转换为异步等待,以便我可以返回它。例如,在我的 iOS 实现中,我有类似的东西:
[assembly: Xamarin.Forms.Dependency(typeof(MySms))]
namespace MyProject.iOS.DS
{
class MySms : IMySms
{
// ...
public void SendSms(string to = null, string message = null)
{
if (MFMessageComposeViewController.CanSendText)
{
MFMessageComposeViewController smsController= new MFMessageComposeViewController();
// ...
smsController.Finished += SmsController_Finished;
}
}
}
private void SmsController_Finished(object sender, MFMessageComposeResultEventArgs e)
{
// Convert e.Result into my smsResult enumeration type
}
}
我可以将public void SendSms 更改为public Task<SmsResult> SendSmsAsyc,但是我如何等待 Finished 回调并获得它的结果,以便我可以让 SendSmsAsync 返回它?
【问题讨论】:
-
你为什么要这么做?
-
因为当我调用我的 SendSms 函数时,我需要取回操作的结果,例如:
var smsResult = await DependencyService.Get<IMySms>().SendSms(to: toSmsNumber, message: smsMessage);
标签: c# xamarin.forms