Продолжить выполнение метода c#

Можно ли каким то образом "сохранить состояние" к примеру метода при его выполнении, и после перезапуска программы продолжить выполнение с этой же строки? На самом деле я думал о том, что это можно сделать через огромное кол-во условий, но может есть более элегантный вариант?


Ответы (1 шт):

Автор решения: Yotic

Нет, такое не возможно.
Но решение естественно есть.

  1. Создайте объект прогресса(класс, каркас или переменную базового типа).\
  2. Каждую итерацию вашей операции сохраняйте в него прогресс и частичный результат.
    Далее выбирайте один из вариантов:
  3. 1 - Сохранять автоматически прогресс раз в какое-то время (Например, 10 секунд, через Thread while сохранять в файл), далее при загрузке программы автоматически загрузить прогресс (или дать пользователю кнопку для выбора файла)
    2 - Сохранять/Загружать прогресс только через кнопку.
class Progress
{
   public Progress(int startIndex, int endIndex, int currentIndex, int sum)
   {
      StartIndex = startIndex;
      EndIndex = endIndex;
      CurrentIndex = currentIndex;
      Sum = sum;
   }
   public int StartIndex, EndIndex, CurrentIndex, Sum;
}
string path = @"C:\progress.txt";
void Load()
{
    progress = new Progress(/*Получение из файла прогресса*/);
}
void Save()
{
    //Сохранения прогресса, можно как отделить переменные пробелом, записать их побайтно или же в Json-формате
}
Progress progress;
void Start()
{
   for(; progress.CurrentIndex < progress.EndIndex; progress.CurrentIndex++)
   {
       progress.Sum += progress.CurrentIndex;
       Save();
   }
}

Если вы используете многопоточность не забывайте использовать lock.

→ Ссылка