2014-02-22 115 views
1

我有一個客戶端服務器應用程序。客戶端將通過wcf調用將數據發送到服務器。但服務器需要大約1分鐘來處理數據。所以我想從服務器到客戶端的進度。我如何使用wcf服務。請給我一個例子。從服務器到客戶端的進度指示wcf-c#

回答

0

可以具有服務包含用於輪詢進展的另一種方法和調用與標識符這兩種方法,例如:

public static void Main() 
{ 
    List<int> dataToProcess = something.... 
    int requestID = 1; 
    MyService.MyMethodToProcess(dataToProcess, requestID); 
} 

另一個輪詢線程(更新UI或任何):

double precentage = MyService.PollMyMethodToProcess(requestID); 
myUIProgressBar.Update(precentage); 

MyMethodToProcess示例:

public void MyMethodToProcess(List<int> data, int requestID) 
{ 
    idToProgress.Add(requestID, 0); 
    for (int i = 0; i < data.Count; i++) 
    { 
     prossessData(data.ElementAt(i)); 
     idToProgress[requestID] += 100/(double)data.Count; //Updates the progress. 
    } 
} 

ConcurrentDictionary<int, double> idToProgress = new ConcurrentDictionary<int, double>(); 

而在輪詢方法中:

public double PollMyMethodToProcess(int requestID) 
{ 
    return idToProgress[requestID]; 
} 

做這將是通過與客戶的正常通信推動進步的服務,雖然這將是更加困難和不符合成本效益的正確方法...

0

提供一個回撥合同,以便您的服務可以在流程階段發生變化時回撥您的客戶端,例如已將大量字節保存到文件中。

相關問題