В каком контексте вызывается b.test1 ()?Если это консольное приложение и после вызова b.test1 () следующая вещь - завершить программу, то поток, созданный b.test1 (), вероятно, никогда не выполнится до завершения программы.
Вам нужно подождать, чтобы дать достаточно времени для создания нового потока (дорого) и планирования его выполнения.«Многопоточный» и «параллельный» не означают мгновенный.Они означают больше работы в единицу времени, усредненной за большую работу.
Чтобы снизить стоимость операции фонового потока, рассмотрите возможность замены new Thread()
на ThreadPool.QueueUserWorkItem()
, чтобы использовать существующий поток рабочего пула,Это сэкономит время и память.
Кроме того, тщательно продумайте, действительно ли работа, которую вы отправляете в фоновый поток, действительно стоит дополнительных потоков.Если запись в журнал может потенциально блокировать файловый ввод-вывод или сетевой ввод-вывод, то выполнение этого в фоновом потоке может быть оправдано, но есть и другие методы для выполнения асинхронного ввода-вывода без необходимости создания новогонить.
Также учтите частоту.Было бы лучше раскрутить фоновый поток, который слушает очередь и большую часть времени спит, и основной поток помещает сообщения в очередь, чем раскручивать новый поток каждый раз, когда вы хотите вывести несколько символовтекст.