2016-11-10 3 views
0

У меня есть клиент (приложение WinForms)/сервер (служба WCF), где я выполняю сложную логику, которая пишет пакеты на удаленный хост - этот процесс занимает около 20 минут пишите в определенную точку, но не завершаете. Поэтому я хочу показать прогресс и попытаться продолжить с того места, где я последний раз останавливался в своем клиентском приложении, в виде индикатора выполнения.Как вызвать индикатор выполнения, определенный в службе wcf - C#

//Service: 
    public class ServiceImplementation: IServiceInterface{ 
    ProgressBar pgBar = new ProgressBar(); 

    public void complexFunction(byte[] data_to_send, UInt32 start_addr){ 
    pgBar.Maximum = data_to_send.Length; 
    for(int i = 0; i < data_to_send.Length; i += 64){ 
     //do some logic 
    } 
     pgBar.Value = i; 
    } 
} 

//Client 
    private void btnProgComplexFunction_Click(object sender, EventArgs e){ 
    callComplexFunction 
    } 

    void callComplexFunction(){ 
    ServiceImplementation.ServiceImplementationClient proxyInstance = new 
    ServiceImplementation.ServiceImplementationClient(); 

    //I attempted doing the following but obviously it doesn't work because progress bar returns an integer (e.g pgBar.Value = 100;). The problem lies here. I have been cracking my skull for two days straight 
    pgBar.Value = proxyInstance.complexFunction(data_to_send, start_addr);} 

ответ

0

Необходимо выполнить асинхронный звонок на ваш веб-сервис. Также нужно приложить клиенту к этому. Для этого вы можете выполнить его с возможностью выполнения загрузки.

Вы можете проверить эту статью.

http://shenoyatwork.blogspot.com.tr/2006/10/showing-download-progress-with-net.html

+0

Зачем мне сообщение с мылом? Я посмотрел на эту статью, и я не понимаю, что происходит, потому что все просто сгруппировано. Не могли бы вы разбить его на меня в скелетную структуру так же, как я задал свой вопрос? –

Смежные вопросы