![](/img/trans.png)
[英]C# xamarin.forms: Async and Await use not working in my code
[英]Xamarin Forms - C# - Async and Await Not Working?
我正在努力使用 C# 中的async 和 await方法。
我想确保在继续 API 调用之前填充了我的“clientToken”变量。
然后我在函数gateway.ClientToken.Generate();
前面放了一个await
方法gateway.ClientToken.Generate();
但它返回一个错误:
错误 CS1061:“string”不包含“GetAwaiter”的定义,并且找不到接受“string”类型的第一个参数的可访问扩展方法“GetAwaiter”(您是否缺少 using 指令或程序集引用?)
这是我的代码:
public Braintree()
{
InitializeComponent();
Task task = GetBraintreeToken();
}
private async Task GetBraintreeToken()
{
var gateway = new BraintreeGateway
{
Environment = Environment.SANDBOX,
MerchantId = "xxxx",
PublicKey = "xxx",
PrivateKey = "xxxx"
};
var clientToken = await gateway.ClientToken.Generate();
Result<PaymentMethodNonce> result_nonce = gateway.PaymentMethodNonce.Create(clientToken);
}
不考虑任何其他问题, Generate
只返回一个string
。
返回一个字符串,其中包含您的客户端初始化客户端 SDK 以与 Braintree 通信所需的所有授权和配置信息。
对于你的问题
我想确保在继续 API 调用之前填充了我的“clientToken”变量。
所有你需要做的是去除await
,字符串是不是awaitable和函数返回同步,并立即
另请注意,您的方法GetBraintreeToken
没有任何内容可await
,因此它不需要async
关键字或返回Task
。
如果你想异步运行它,你可以在你的构造函数或页面OnAppearing
事件中从Task.Run()
调用它
例如给定
private void GetBraintreeToken()
{ ...
你可以
public Braintree()
{
InitializeComponent();
Task.Run(() => GetBraintreeToken());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.