Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Исключение в дочернем потоке, из за этого падает все приложение 
:(
    Опции темы
W1zArD
Дата 25.11.2009, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 29.1.2006

Репутация: нет
Всего: 3



Добрый день.

Возникла ситуация когда в  дочерних потоках генерируются исключения, которые не обрабатываются, а это к сожалению ведет к краху без каких либо дополнительных данных.

Код

using System;
using System.Collections.Generic;
using System.Threading;
using System.Windows.Forms;

namespace example
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private static void ExJob()
        {
            for (int i = 0; i < 10; i++)
            {
                Thread.Sleep(10);
                if (i == 7)
                {
                    throw null;
                }
            }
        }

        private readonly List<Thread> Threads = new List<Thread>();

        private void Job()
        {
            for (int i = 0; i < 10; i++)
            {
                var th = new Thread(ExJob) {IsBackground = true};
                Threads.Add(th);
            }
            Threads.ForEach(a => a.Start());
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var th = new Thread(Job);
            th.Start();
        }
    }
}


Вот пример иллюстрирующий данное поведение.

Хотелось бы поинтересоваться как правильно поступать в данных случаях, что посоветуете.
В соседней теме я пытался глобально перехватить исключения, что оказалось неверным.

Как если не обрабатывать, то хотя бы получать информацию о том где упало приложение (на чем)?

Поэтому собственно вопрос и остался открытым.
В аттаче находится пример проекта (исходник + бинарник).

Благодарю за внимание.

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  example.7z 17,72 Kb
PM   Вверх
PashaPash
Дата 25.11.2009, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 9
Всего: 49



Цитата(W1zArD @  25.11.2009,  09:44 Найти цитируемый пост)
В соседней теме я пытался глобально перехватить исключения, что оказалось неверным.

Об этом стоило явно сказать в соседнем топике, а не создавать новый. Чем именно неверным?

Какое поведение тебе нужно? Убивание одного job-а? Крах всего приложения, но с "дополнительными данными"? Чем не устроил вариант от tol05?


--------------------
PM MAIL WWW   Вверх
W1zArD
Дата 25.11.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 29.1.2006

Репутация: нет
Всего: 3



PashaPash, все дело в том что UnhandledException дасть только зафиксировать (лог) исключение. Самым "страшным" же является тот факт что приложение глухо падает, нет ни отладочной информации, ни диалоговых окон, ровным счетом ничего.

Быть существуют инструменты для обнаружения (грубо говоря дамп файлы), контроля данного поведения?
PM   Вверх
PashaPash
Дата 25.11.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 9
Всего: 49



W1zArD, посмотри пример в msdn по Application.ThreadException. 


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.