Информация об ошибке потеряна из рабочего потока - PullRequest
0 голосов
/ 17 июня 2011

Я хотел бы понять, почему происходит следующее поведение, и любые способы достижения того, что мне нужно.

У меня есть основной поток, который запускает работника backgorund для выполнения некоторой обработки.У меня есть фоновый работник, завершивший даже обработчик, где я слушаю любую ошибку.Когда возникает ошибка, я выбрасываю ее и позволяю всплыть обратно в основной поток.Я не хочу обрабатывать ошибку и показывать какое-либо сообщение от фонового рабочего.

Но когда ошибка, наконец, перехвачена в главном потоке, я не вижу фактического сообщения об ошибке, но получаю 'целевой вызов'неизвестная ошибка.Хотелось бы понять, почему и какие способы можно использовать для таких сценариев.

Комментарии: Добавлен образец исходного кода по запросу. Причина, по которой был добавлен WCF, поскольку эта логика закодирована в сценарии службы WCF.Надеюсь, теперь это имеет больше смысла.

 class ParentClass
    {
        static void main()
        {
            try
            {
                Thread t = new Thread(new ThreadStart(M1));
                t.Start();
                // ...
                // ...
            }
            catch
            {
                // here I dont see the error as 'date time conversion' 
                // but see a generic error as I mentioned
            }
        }

        static void M1()
        {
            try
            {
                Convert.ToDateTime("sss");
            }
            catch (Exception e)
            {
                // Here I see the error as 'error in date time conversion'
               throw; 
            }
        }
    }

Спасибо, Мани

1 Ответ

0 голосов
/ 17 июня 2011

Не глядя на код, трудно угадать, как вы передаете исключение, но вы проверили свойство InnerException полученного вами исключения. Может содержать информацию, которую вы ищете. Если информации нет, возможно, код, перехватывающий исключение и «плавающий», сам может генерировать ошибку.

...