Thread введет себя странно
От: SanyaVB  
Дата: 12.01.17 10:36
Оценка:
Привет всем!

Удивительная ошибка возникла с работой потоками на ровном месте!

Thread thread = new Thread(delegate (object qq) { while(true) Console.WriteLine(qq); }) { IsBackground = true };
thread.Start(57);
thread.Join();


Вот такой код работает. Создается поток и бесконечно выводит на консоль 57.
А теперь привожу код, который не запускает поток... точнее thread.ThreadState указывает ан то что поток запустился, но ни в отладчике ни на консоль текст 57 не выводит:

Thread thread = new Thread(QQ) { IsBackground = true };
thread.Start(57);
thread.Join();

        private static void QQ(object qq)
        {
            while (true) Console.WriteLine(qq);
        }



Думал возникает исключение. обернул в TRY/CATCH — исключение не возникает. Состояние потока возвращает что он работает.

Еще приведу пример который не выполняет поток:

Thread thread = new Thread(delegate (object qq) { Console.WriteLine("Этот текст не отображается!!!");  QQ(qq); }) { IsBackground = true };
thread.Start(57);
thread.Join();

        private static void QQ(object qq)
        {
            while (true) Console.WriteLine(qq);
        }


В результате множества экспериментов обнаружил: если в потоке происходит вызов какого то метода, то он тупо не выполняется, но объект Thread говорит что поток запущен и ни каких исключений не возникает!!!

Есть ли идеи с чем может быть связано??? Я вот думаю может что-то не так со стеком (в начале программы, а именно в Main таких глюков нет)??? как можно узнать максимальный размер стека и на сколько он заполнен?
Отредактировано 12.01.2017 15:42 AndrewVK . Предыдущая версия .
thread
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.