Продолжить выполнение метода c#
Можно ли каким то образом "сохранить состояние" к примеру метода при его выполнении, и после перезапуска программы продолжить выполнение с этой же строки? На самом деле я думал о том, что это можно сделать через огромное кол-во условий, но может есть более элегантный вариант?
Ответы (1 шт):
Автор решения: Yotic
→ Ссылка
Нет, такое не возможно.
Но решение естественно есть.
- Создайте объект прогресса(класс, каркас или переменную базового типа).\
- Каждую итерацию вашей операции сохраняйте в него прогресс и частичный результат.
Далее выбирайте один из вариантов: - 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.