Я портирую программу, у которой было очень долгое время загрузки, которое вообще не улучшалось, когда я ее переносил, так как медлительность была из-за доступа к db-серверу (а не к неоптимальному коду).Я переместил загрузку в отдельный поток с библиотекой Tasks
, и теперь пользовательский интерфейс не зависает при загрузке, но меня это кое-что заинтересовало:
У объекта Task.Factory
есть методStartNew
, который должен создать новое задание, запустить его и вернуть ссылку на него.Это имеет смысл, но кажется, что конструктор Task
делает то же самое.
Когда я делаю следующее:
Task catsFromDB = new Task(() => AddCategoriesFromDB(cts.Token), cts.Token);
catsFromDB.Start();
Я получаю ошибку InvalidOperationException
, которую я действительноне понимаюКажется, я верю, что это уже началось.Что у меня нет.
[EDIT]
Ошибка: «InvalidOperationException, Start не может быть вызван для задачи, которая завершила»
[РЕДАКТИРОВАТЬ]
Ошибка - код отмены, который я включил.Мне нужно было сбросить отмену, прежде чем пытаться запустить его снова.