2014-02-22 42 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

提供一个回拨合同,以便您的服务可以在流程阶段发生变化时回拨您的客户端,例如已将大量字节保存到文件中。

相关问题