Xamarin表单-C#-Async和wait不工作?
我正在努力使用C#中的异步和等待方法 我想确保在继续API调用之前填充了“clientToken”变量 然后在函数Xamarin表单-C#-Async和wait不工作?,c#,ios,xamarin.forms,async-await,C#,Ios,Xamarin.forms,Async Await,我正在努力使用C#中的异步和等待方法 我想确保在继续API调用之前填充了“clientToken”变量 然后在函数gateway.ClientToken.Generate()前面放置一个wait方法但它返回了一个错误: 错误CS1061:“字符串”不包含“GetAwaiter”的定义,并且找不到可访问的扩展方法“GetAwaiter”,该扩展方法接受类型为“string”的第一个参数(是否缺少using指令或程序集引用?) 这是我的密码: public Braintree()
gateway.ClientToken.Generate()前面放置一个wait
方法代码>但它返回了一个错误:
错误CS1061:“字符串”不包含“GetAwaiter”的定义,并且找不到可访问的扩展方法“GetAwaiter”,该扩展方法接受类型为“string”的第一个参数(是否缺少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);
}
公共大脑树()
{
初始化组件();
任务任务=GetBraintreeToken();
}
私有异步任务GetBraintreeToken()
{
var网关=新的BraintreeGateway
{
Environment=Environment.SANDBOX,
MerchantId=“xxxx”,
PublicKey=“xxx”,
PrivateKey=“xxxx”
};
var clientToken=wait gateway.clientToken.Generate();
Result\u nonce=gateway.PaymentMethodNonce.Create(clientToken);
}
忽略任何其他问题,只返回一个字符串
返回包含所有授权和配置的字符串
客户端初始化客户端SDK所需的信息
与Braintree交流
回答你的问题
我想确保我的“clientToken”变量在
继续进行API调用
您只需删除await
,字符串不是可等待的,函数立即同步返回
还要注意的是,在您的方法GetBraintreeToken
中没有什么可以等待的,因此它不需要async
关键字或返回任务
如果要异步运行它,可以从构造函数中的Task.run()
调用它,也可以在出现的事件中调用它
例如给定
private void GetBraintreeToken()
{ ...
你可以
public Braintree()
{
InitializeComponent();
Task.Run(() => GetBraintreeToken());
}
忽略任何其他问题,只返回一个字符串
返回包含所有授权和配置的字符串
客户端初始化客户端SDK所需的信息
与Braintree交流
回答你的问题
我想确保我的“clientToken”变量在
继续进行API调用
您只需删除await
,字符串不是可等待的,函数立即同步返回
还要注意的是,在您的方法GetBraintreeToken
中没有什么可以等待的,因此它不需要async
关键字或返回任务
如果要异步运行它,可以从构造函数中的Task.run()
调用它,也可以在出现的事件中调用它
例如给定
private void GetBraintreeToken()
{ ...
你可以
public Braintree()
{
InitializeComponent();
Task.Run(() => GetBraintreeToken());
}
如果Generate
方法包含可以运行异步的代码,则可以将该方法更改为async任务,而不是string
,并从中调用异步方法。如果没有,那么将此方法设置为异步就没有意义,您将无法等待它。您只能等待任务如果Generate
方法包含可以运行异步的代码,您可以将该方法更改为async Task
,而不是string
,并从中调用异步方法。如果没有,那么将此方法设置为异步就没有意义,您将无法等待它。您只能等待任务