【发布时间】:2016-11-03 08:06:16
【问题描述】:
对于以下代码,我调用了该异步 void 方法。
public void LoadSystemDetails(int clientId)
{
DataSystem.Name = "Salesforce System";
DataSystem.Description = "";
GetAllFields(clientId);
}
下面的代码是GetAllFields方法
public async void GetAllFields(int clientId)
{
this.DataSystem.SystemTables = new List<DataSystemTable>();
using (var forceClient = await ConnectToSalesforceByOAuth(clientId))
{
var SalesForceTable = new DataSystemTable
{
TableName = "Contact"
};
DataSystem.SystemTables.Add(SalesForceTable);
var contact = forceClient.DescribeAsync<SalesforceObject>("Contact");
var tableFields = new List<DataSystemField>();
foreach (var con in contact.Result.Fields)
{
tableFields.Add(new DataSystemField
{
ColumnName = con.Name,
});
}
SalesForceTable.EissSyncSystemFields = tableFields;
}
我打电话给callbackScript,如下所示。
callbackScript.AppendLine(string.Format("var destinationSystem ={0};", JsonConvert.SerializeObject(this.DestinationSystem, Formatting.Indented)));
这里DestinationSystem 正在调用LoadSystemDetails。赞DestinationSystem.LoadSystemDetails(clientId)
而using (var forceClient = await ConnectToSalesforceByOAuth(clientId)) 行在callbackScript 执行时执行。所以SystemTables 没有任何价值。但它有Name 和Description。
所以在这里我需要等待LoadSystemDetails 完成GetAllFields。
我是怎么做到的。请帮帮我。 谢谢。
【问题讨论】:
标签: c# async-await