我有一個客戶端服務器應用程序。客戶端將通過wcf調用將數據發送到服務器。但服務器需要大約1分鐘來處理數據。所以我想從服務器到客戶端的進度。我如何使用wcf服務。請給我一個例子。從服務器到客戶端的進度指示wcf-c#
1
A
回答
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
提供一個回撥合同,以便您的服務可以在流程階段發生變化時回撥您的客戶端,例如已將大量字節保存到文件中。
相關問題
- 1. 的Node.js服務器操作的客戶端進度指示器
- 2. 的Http從客戶端加密到服務器和服務器到客戶端
- 3. 客戶端 - 服務器(從服務器到客戶端的文件傳輸)
- 4. WCF服務器/客戶端回調,從客戶端到服務器的回覆
- 5. 在客戶端顯示服務器批處理進度
- 6. 從服務器回撥到客戶端
- 7. JavaScript:從服務器到客戶端
- 8. NodaTime:從服務器到客戶端
- 9. 從服務器發送到客戶端
- 10. 查看客戶端從服務器下載進度
- 11. 從TLS客戶端提取服務器名稱指示(SNI)hello
- 12. UpdatePanel - 從服務器端顯示錯誤到客戶端div
- 13. python服務器的客戶端改進
- 14. Thread.CurrentCulture是指客戶端或服務器
- 15. 服務從網絡服務器二進制文件,客戶端
- 16. 簡單的Java客戶端 - 服務器:客戶端doent連接到服務器
- 17. 客戶端到服務器端調用
- 18. 客戶端數據到服務器端
- 19. 客戶端到服務器端Node.js
- 20. 在服務器端運行線程並在客戶端顯示進度?
- 21. 從客戶端發送到服務器,從服務器發送到客戶端在java中
- 22. Java:將文件從服務器傳輸到客戶端,從客戶端傳輸到服務器
- 23. 服務器和客戶端之間的通信進度
- 24. 消息,從服務器的客戶端
- 25. 發送從JavaScript(客戶端)的值來表示(服務器端)
- 26. 的NodeJS:客戶端到客戶端通過服務器
- 27. 服務器到客戶端通知/ Web服務(jax-ws)到客戶端通信
- 28. ASP.Net客戶端模式進度指示器
- 29. 進行客戶端 - 服務器聊天 - 遇到連接客戶端到客戶端的問題
- 30. WCF的服務器/客戶端conected客戶服務器