Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Andrey_y
13 / 13 / 4
Регистрация: 04.11.2012
Сообщений: 55

Как защитить фоновые операции от преждевременного прерывания путем закрытия приложения?

23.02.2014, 14:16. Показов 1363. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Выполняется ряд методов которые обращаются к другим сервисам, после к бд.. и тд.. В следсвтвии чего, пользовательский интерфейс словно подвисает. Я так понимаю(в теории) данные методы можно поместить в отдельный поток, а вот что делать тогда с выполнением методов. Их выполнение должно быть выполненно до конца.А пользователь может закрыть программу раньше. Есть ли какие либо решения что бы не смотря ни на что, если пользователь запустил процесс выполнения, закрытие, выполнение других методов не могли помешать нормально работе начатого? (В результате буду это все выполнять под Asp.Net, но так как в том разделе помочь не могут, а каркас C# общий, решил задать здесь.. Вдруг пожет кто то)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.02.2014, 14:16
Ответы с готовыми решениями:

Как защитить собственный процесс от закрытия
Как защитить собственный процесс от закрытия, то есть, чтобы при попытке его завершения выдавало "Отказанов в доступе"

Как визуально показать пользователю что программа выполняет фоновые операции
Всем привет! На моей форме есть несколько кнопок, которые выполняют определенный функционал. При нажатии на одну из кнопок пользователем...

Как защитить базу путем привязки к серийному номеру компьютера?
Добрый вечер! Не могли бы Вы мне подсказать, как считать серийный номер компьютера (будь то код BIOS, материнской платы, процессора)?...

8
 Аватар для dirtez0
44 / 44 / 19
Регистрация: 20.01.2014
Сообщений: 87
23.02.2014, 14:34
Цитата Сообщение от Andrey_y Посмотреть сообщение
а вот что делать тогда с выполнением методов. Их выполнение должно быть выполненно до конца.
Для этого есть IDisposable.Dispose() и Object.Finilize()
Деструкторы в самом общем виде короче.
0
 Аватар для Andrey_y
13 / 13 / 4
Регистрация: 04.11.2012
Сообщений: 55
23.02.2014, 14:58  [ТС]
А как это связано с деструкторами я что то не понял?

Добавлено через 8 минут
Цитата Сообщение от dirtez0 Посмотреть сообщение
Для этого есть IDisposable.Dispose() и Object.Finilize()
Деструкторы в самом общем виде короче.
А как это связано с деструкторами я что то не понял?
0
 Аватар для dirtez0
44 / 44 / 19
Регистрация: 20.01.2014
Сообщений: 87
23.02.2014, 15:03
Лучший ответ Сообщение было отмечено Andrey_y как решение

Решение

Ну например Finilize() вызывается сборщиком мусора (в общем виде перед удалением объекта), а если закрыть приложение, то перед закрытием запуститься сборщик мусора, а там можно доделать всё что не дали сделать спокойно на фоне.

Do you understand me?


Вот создайте экземпляр и попробуйте закрыть приложение:
C#
1
2
3
4
5
6
7
8
9
class A : Object
{
    // допустим закрываем приложение
    // а перед пибикнем на прощание ^_^
    ~A()
    {
        Console.Beep();
    }
}
1
 Аватар для Andrey_y
13 / 13 / 4
Регистрация: 04.11.2012
Сообщений: 55
23.02.2014, 15:08  [ТС]
Цитата Сообщение от dirtez0 Посмотреть сообщение
Do you understand me?
understand
Спасибо большое Вектор получен
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
23.02.2014, 16:00
Цитата Сообщение от dirtez0 Посмотреть сообщение
Ну например Finilize() вызывается сборщиком мусора (в общем виде перед удалением объекта), а если закрыть приложение, то перед закрытием запуститься сборщик мусора, а там можно доделать всё что не дали сделать спокойно на фоне.
Не стоит такую логику пихать в деструктор. Просто делаете потоки, в которых выполняется приложение, основными, и даже если вы закроете приложение (интерфейс), все основные потоки продолжат работу до конца, но если все таки гарантированно, то делать так как говорить dirtez. +

1. Класс, в котором должна быть усложнена логика деструктора, наследовать от SafeHandle, либо CriticalFinalizerObject - так как деструкторы этих классов компилируются при сборке проекта сразу же в объектный код, (а не в IL), то есть их выполнение гарантированно произойдет (вроде бы) даже при убийстве через task manager. НО это нужно проверить.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.02.2014, 16:20
В принципе, если потоку поставить IsBackground=true, то он гарантированно закроется после закрытия основного приложения...
Сам так сделал, все работает. Закрываешь форму, и поток прерывается, практически сразу.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
23.02.2014, 16:22
insite2012, немного не вникли, наоборот надо сделать IsBackground = false,чтобы гарантировать завершение начатой работы; для Thtread класса - они по умолчанию основные, а не фоновые.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.02.2014, 16:33
Да, согласен. Но тогда лучше вообще отменить закрытие программы и дождаться сигнала из потока о том, что он закончил свою работу и только потом закрыть приложение. Иначе получиться не очень красивая ситуация, программы самой уже нет, а поток висит и что-то продолжает делать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.02.2014, 16:33
Помогаю со студенческими работами здесь

Фоновые приложения
Всех приветствую!!! В *Параметрах* в разделе *Конфиденциальность* не могу зайти в *Фоновые приложения* при клике на них выкидывает на...

Прерывания закрытия книги в макросе
Хочу сделать защиту от случайного закрытия книги. В auto_close книги используется ThisWorkbook.Close SaveChange: = False.

Не открывается вкладка Фоновые приложения
Windows 10 Параметры, конфидоцеальность, Фоновые приложения , нажима на нее и Параметры ну или окошко, сразу закрываеться, что делат?

Подкиньте идею как защитить сервер от эмуляции запросов не из приложения
Всем добрый день! Подкиньте идею как защитить сервер от эмуляции запросов не из приложения.. Суть проблемы такова: кто-то вскрывает...

Как правильно написать кнопку закрытия приложения
Здравствуйте. Во первых хочу сказать,что у вас все ссылки битые в теме шапки Silverlight FAQ Во вторых появился такой интересный вопрос...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru