Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Корректно завершить работу приложения. / 12 сообщений из 12, страница 1 из 1
31.01.2017, 08:40
    #39395126
csprogrammist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
Есть необходимость при завершении работы приложения оповещать пользователя о наличии работаюших фоновых потоках и прочих подобных ньюансах, при которых не следует завершать работу приложения. Как отследить наличие таких моментов?
...
Рейтинг: 0 / 0
31.01.2017, 10:11
    #39395180
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
Если приложение работает с документом, то определять наличие изменений.
Если приложение в процессе какой-то работы, то фиксировать некоторое состояние приложения/процесса "в работе".

Все через логику, короче
...
Рейтинг: 0 / 0
31.01.2017, 10:45
    #39395209
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
csprogrammist,

я в своё время особо не заморачивался...

есть основная форма:
Код: c#
1.
public partial class MainForm : Form


с неё приложение стартует:
Код: c#
1.
Application.Run(new MainForm());


пользователь запускает фоновые потоки и видит прогресс по ним в отдельном окне (форме)
соответсвенно при закрытии основной формы сл. проверка:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
protected override void OnClosing(CancelEventArgs e)
{
    if (Application.OpenForms.Count > 0)
    {
        e.Cancel = true;
    }

    base.OnClosing(e);
}
...
Рейтинг: 0 / 0
31.01.2017, 12:07
    #39395321
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
csprogrammistКак отследить наличие таких моментов?
кодом, кодом....
...
Рейтинг: 0 / 0
31.01.2017, 12:15
    #39395329
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
ИзопропилcsprogrammistКак отследить наличие таких моментов?
кодом, кодом....
Вот запустил простое консольное приложение, таск менеджер показывает 8 потоков. Как отделить ос от тефтелей?
...
Рейтинг: 0 / 0
31.01.2017, 13:33
    #39395434
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
ЕвгенийВВот запустил простое консольное приложение, таск менеджер показывает 8 потоков. Как отделить ос от тефтелей?
Каких ос от каких тефтелей? таск менеджер показывает количество unmanaged потоков, несколько которых запросто может родить один managed поток.
...
Рейтинг: 0 / 0
31.01.2017, 14:45
    #39395519
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
ЕвгенийВИзопропилпропущено...

кодом, кодом....
Вот запустил простое консольное приложение, таск менеджер показывает 8 потоков. Как отделить ос от тефтелей?
ты о своих потоках беспокоишься?
...
Рейтинг: 0 / 0
31.01.2017, 15:18
    #39395543
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
csprogrammistКак отследить наличие таких моментов?

Фиксировать и отслеживать. Конкретно как, приводи конкретный код.
...
Рейтинг: 0 / 0
31.01.2017, 15:41
    #39395573
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
Сон Веры ПавловныЕвгенийВВот запустил простое консольное приложение, таск менеджер показывает 8 потоков. Как отделить ос от тефтелей?
Каких ос от каких тефтелей? таск менеджер показывает количество unmanaged потоков, несколько которых запросто может родить один managed поток.
Чего?
...
Рейтинг: 0 / 0
31.01.2017, 15:55
    #39395598
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
ИзопропилЕвгенийВпропущено...

Вот запустил простое консольное приложение, таск менеджер показывает 8 потоков. Как отделить ос от тефтелей?
ты о своих потоках беспокоишься?
Как отследить, что завершилось?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Random r = new Random();

            var trds = Enumerable.Range(0, 1000)
                 .Select(_ =>
                 new Thread(() =>
                 {
                     var i = r.Next(10, 100000);
                     for (var j = 0; j < 10; j++)
                     {
                         Thread.Sleep(i);
                     }
                 }))
                 .ToList();
            trds.ForEach(t => t.Start());
...
Рейтинг: 0 / 0
31.01.2017, 17:07
    #39395691
Rocketeer88888
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
ЕвгенийВИзопропилпропущено...

кодом, кодом....
Вот запустил простое консольное приложение, таск менеджер показывает 8 потоков. Как отделить ос от тефтелей?
Сам храни значимые для тебя потоки, формы и прочее в специальных списках, а когда надо закрыться - проверяй списки и выдавай алерты. Короче, как Скиана написал. Создал форму или поток - в список. Завершился поток - из списка.

ЕвгенийВИзопропилпропущено...

ты о своих потоках беспокоишься?
Как отследить, что завершилось?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Random r = new Random();

            var trds = Enumerable.Range(0, 1000)
                 .Select(_ =>
                 new Thread(() =>
                 {
                     var i = r.Next(10, 100000);
                     for (var j = 0; j < 10; j++)
                     {
                         Thread.Sleep(i);
                     }
                 }))
                 .ToList();
            trds.ForEach(t => t.Start());


Делегат, который в поток отправляешь, должен иметь код в начале регистрации себя в списке важных потоков, а в конце - исключения себя из этого списка. Как самый простой вариант. Либо мутить события на кастомный класс, что-то типа такого .
...
Рейтинг: 0 / 0
31.01.2017, 22:08
    #39395885
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректно завершить работу приложения.
Не пользователь должен решать что надо завершить
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Корректно завершить работу приложения. / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]