2011-07-11 165 views
0

我已經編寫了訪問Web服務x上的Delete方法的代碼,我將爲每種方法創建包裝,但是我打擊的東西可能非常簡單。異步Web服務調用

我的代碼由三個方法:

  • 之一進行刪除調用,這只是將PARAMS到一個異步方法。
  • 第二個是事件處理程序。
  • 第三過程的結果到數據表

這是我的當前代碼:

public void Delete(string[] Identifiers, string ObjectType) 
{ 
    service.deleteAsync(ObjectType, Identifiers); 
    service.deleteCompleted += new deleteCompletedEventHandler(service_deleteCompleted); 
} 

void service_deleteCompleted(object sender, deleteCompletedEventArgs e) 
{ 
    StoreResults(e.Result); 
    if (resultsTable.Rows.Count == totalRecords) 
    { 
     CSVFile myFile = new CSVFile(",", true); 
     myFile.Save(resultsTable, outputPath); 
     Console.WriteLine("Tasks completed"); 
    } 
} 

public void StoreResults(DeleteResult[] ResultSet) 
{ 
    if (resultsTable.Columns.Count < 1) 
    { 
     resultsTable.Columns.Add("ID"); 
     resultsTable.Columns.Add("Errors"); 
     resultsTable.Columns.Add("Success"); 
    } 

    foreach (DeleteResult r in ResultSet) 
    { 
     StringBuilder errors = new StringBuilder(); 
     object[] newRow = new object[3]; 

     newRow[0] = r.id; 
     if (r.errors != null) 
     { 
      newRow[1] = errors[0].ToString(); 
     } 
     else 
      newRow[1] = "No Errors to Report"; 

     newRow[2] = r.success.ToString(); 

     resultsTable.Rows.Add(newRow); 
    } 
} 

web服務的一個限制是,我只能通過每次呼叫50點的ID,所以我一些管理源數據分塊的後臺代碼,我現在需要獲得的是將所有這些結果存儲在數據表中並將其傳回。

回答

2

你必須先訂閱:

public void Delete(string[] Identifiers, string ObjectType) 
{ 
    service.deleteCompleted += service_deleteCompleted; 
    service.deleteAsync(ObjectType, Identifiers); 
}