Должен ли я убить незаконченную задачу в Windows Forms

1

В проекте Windows Forms у меня есть форма, которая запускает некоторую задачу при нажатии кнопки следующим образом:

private void button_Click(object sender, EventArgs e)
{
    new Task(() => { DoSomeCalculations(); }).Start();
}

Предположим, что пользователь закрыл эту форму раньше завершения задачи. Должен ли я как-то убить незавершенную задачу или она закончится автоматически? Будет ли ошибка приложения в этом случае или smth, как это?

Заранее спасибо.

  • 2
    Потоки с запуском и забыванием работают очень редко. Если он каким-то образом не бомбит, когда пользователь нажимает кнопку сто раз или когда окно исчезает, то вы все еще не знаете, когда будет безопасно завершить работу вашего приложения. Если вас это не волнует, у вас нет проблем.
Теги:
winforms

1 ответ

2

Если вы хотите отменить задачи при закрытии формы, вам следует добавить поддержку маркера отмены и отмену запроса на вызов для каждой задачи. Если форма является основной формой, вам ничего не нужно делать - закрытие потока пользовательского интерфейса закроет задачи. Если задачи связаны только с закрытой формой - тогда да, вы должны отменить все из них.

  • 0
    Можете ли вы дать мне пример, пожалуйста?
  • 0
    В вашей форме переопределите метод OnFormClosing. Добавить поле CancellationTokenSource tokenSource. и передайте его в качестве параметра вашему методу: var myTask = Task.Factory.StartNew (() => DoSomeCalculations, tokenSource.Token) ;. В OnFormClosing переопределите вызов tokenSource.Cancel (); Проверьте эту ссылку тоже: blogs.msdn.com/b/csharpfaq/archive/2010/07/19/…
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню