2016-11-18 1 views
-1

Вот моя дилемма:Распаковка значение для цикла подсчета во время выполнения C#

public void checkCountProgress(int countProgress, int totalDataSize){ //work done here} 

public void func1(int passVar) 
{ 
    for(int = 0; i<= 2000; i+=64){ 
    //do work 
     checkCountProgress(i, 2000); 
    }  
} 

Everytime когда я итерацию через для цикла, я, очевидно, изменяется с шагом 64. checkCountProgressFunction дает мне значение i в зависимости от того, что мое клиентское соединение с удаленным хостом отключилось. Поэтому я хочу продолжать писать и отправлять данные в сеть, откуда я остановился. Я бы вручную остановил свой сервер, изменил значение i в параметре вызывающей функции, запустил, обновил ссылку на службу с клиентской стороны и продолжил, но теперь мне нужно автоматизировать это, потому что теперь мне нужно включить несколько подключений к хосту. Когда я смотрю на некоторые примеры, он обычно ссылается на передачу параметра из одной функции, получение его значения и использование его другим методом (How to pass value from one method to another?), который полностью отличается от того, что я хочу сделать. Как я могу это достичь?

ответ

0

Вы имеете в виду использование настроек для сохранения значения, при котором цикл был остановлен? Если да, то вот пример того, как использовать их

В Свойства вашего проекта, в Настройки Вкладка добавить новую настройку вас желаемый тип значения и установить область для пользователя. В моем примере я создал один с именем ValueToResume типа Int и начальное значение 0.

static void Main(string[] args) 
    { 
     int initialLoopValue = Properties.Settings.Default.ValueToResume; 
     for (int i = initialLoopValue; i <= 2000; i += 64) 
     { 
      //do work 
      checkCountProgress(i, 2000); 
     } 
     Properties.Settings.Default.Reset(); //Loop was completed, we can reset the setting to 0 
    } 

    public static void checkCountProgress(int countProgress, int totalDataSize) 
    { 
     if (countProgress > 600) 
     { 
      Properties.Settings.Default.ValueToResume = countProgress; 
      Properties.Settings.Default.Save(); 
      Environment.Exit(0); //force application exit 
     } 
    } 
} 

На втором прогоне, цикл будет инициализирован при значении 640

+0

Спасибо большое за такие подробный ответ. Я обязательно попробую. –

+0

Единственная проблема, с которой я сталкиваюсь, заключается в том, что вы явно устанавливаете значение для countProgress в вашем операторе if. Соединение может быть потеряно на любом этапе, а не конкретно 600. Как я могу это достичь? –

+0

@ LindaMotaung поэтому просто удалите условие if, чтобы значение параметра обновлялось и сохранялось каждый раз при проверке checkCountProgress() – Innat3

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