이전 WinForms/ADO 앱의 데이터 액세스 레이어를 수정하여 비동기 developerforce 나머지 api에서 soql을 사용하여 Salesforce 개체를 가져옵니다. 다음 방법은 일반적으로 결코 내 열세 테이블 루틴 하나를 제외하고, 작동하지 않는 AddMyTableRow (System.Data.DataRowCollection.Add()) 메소드로부터 반환Windows Forms의 DataTable에 데이터를 비동기 적으로로드하십시오.
public void LoadData() {
var tasks = new List<Task<int>> {
GetObject1Async(),
GetObject2Async(),...
GetObject13Async()
};
Task.WaitAll(tasks.ToArray());
//do some postprocessing now that I have all the data
}
async Task<int> GetObject1Async(){
var response = await cnx.QueryAsync<dynamic>("SELECT foo FROM bar").ConfigureAwait(false);
foreach (var rec in response.Records){
var row = MyDataSet.MyTable.NewMyTableRow();
row.Name = rec.Name; ...
MyDataSet.MyTable.AddMyTableRow(row); //<== Sometimes this never returns
}
return MyDataSet.MyTable.Count;
}
이도 올바른 접근 방식인가?
내가 전체를 주석으로 처리하면 cnx.Query ... 행이 표시되고 AddMyTableRow (dummyData)가 호출된다는 것을 알았습니다. 어떤 종류의 비동기/스레딩/컨텍스트가 진행되고있는 것처럼 느껴지지만 어떤 종류의 오류 또는 예외도 생성하지 않기 때문에 계속 진행할 필요가 없습니다.
건배, 제프