目前我正在從事一個項目,需要消耗大量的數據從web服務, 有服務類發送輸入日期到服務器,並得到結果, 由於它耗時過程中,需要用戶組合進度條和背景工作程序來向用戶顯示過程百分比。我已經瀏覽了很多關於這個主題的示例代碼,但仍然無法找出實現它的最佳方式。請你幫忙,我 代碼以下,C進度條和backgroundworker#
private MyCollection[] callWebService(string[] Inputs, string method)
{
List<string> results = new List<string>();
string fiel dNames = ""; // todo - fix this if nothing left in loop
int sizeOfArray = 500;
for (int i = 0; i < Inputs.Length; i = i + sizeOfArray)
{
string[] outputRecords;
int errorCode;
string errorString;
string[] thisFiveHundred = createSubArray(Inputs, i, sizeOfArray);
iq.NameValuePair[] namevaluepairs = new iq.NameValuePair[0];
fieldNames = iqOfficeWebservice.BatchStan(method, thisFiveHundred, null, "", out outputRecords, out errorCode, out errorString);
results.AddRange(outputRecords);
}
results.ToArray();
IAddress[] formattedResults = convertStringsToInputs(fieldNames, results);
return formattedResults;
}
是的,我知道進度條演示,但我們可以把conter連接到worker_Dowork和myCollection?我應該在myCollection中添加一個計數器並將計數器傳遞給worker_Dowork?對不起,也許我有點沉悶,我只是不能將演示鏈接到實際的工作方法。 – 2012-07-24 05:08:01
您應該編寫從_DoWork中的數據庫讀取的代碼,並且更新進度取決於行計數。然後在_RunWorkerCompleted事件中獲取您的數據。替換System.Threading.Thread.Sleep(1000);與您的代碼 – 2012-07-24 06:20:22