Привет всем!
Удивительная ошибка возникла с работой потоками на ровном месте!
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 таких глюков нет)??? как можно узнать максимальный размер стека и на сколько он заполнен?