为啥我的线程在“Main”中的任何内容可以运行之前就退出了?
Posted
技术标签:
【中文标题】为啥我的线程在“Main”中的任何内容可以运行之前就退出了?【英文标题】:Why am I getting that my thread exits before anything in `Main` can run?为什么我的线程在“Main”中的任何内容可以运行之前就退出了? 【发布时间】:2016-03-05 20:02:43 【问题描述】:我有一个简单的控制台应用程序
using System;
using System.Drawing;
using System.Windows;
using System.Windows.Media;
namespace ConsoleApplicationFont
class Program
static void Main(string[] args)
Console.WriteLine("At least we got here");//TEST
try
var FF = new FontFamily();
foreach (var item in FF.FamilyNames.Keys)
Console.WriteLine(item.ToString());
catch ( Exception e )
Console.WriteLine("Error: 0", e.Message);
当前正在输出的
线程 0x1b9c 已退出,代码为 259 (0x103)。线程 0x2438 已以代码 0 (0x0) 退出。线程 0x444 已退出代码 259 (0x103)。线程 0x21ec 已退出,代码为 259 (0x103)。这 线程 0x266c 已退出,代码为 259 (0x103)。程序'[7564] SeeSystemDotDrawingFonts.vshost.exe' 已退出,代码为 0 (0x0)。
并且输出与Main
的主体没有任何关系,因为即使它全部输出我也能得到它。这里有什么问题,我该如何调试这些类型的情况?
【问题讨论】:
后台会有很多线程 - 一个用于终结器等 - 我不会担心它们 我认为你在错误的地方寻找你的输出......呵呵...... 来自 MSDN:“当您想以编程方式创建复合字体时,请使用此默认构造函数。这意味着您不必为构造函数指定字体系列名称,但您必须将集合填充到在使用构造的实例之前的 FamilyMaps 和 FamilyNames 集合。” msdn.microsoft.com/en-us/library/ms602322%28v=vs.110%29.aspx 我预计会出现编译器警告,因为 FontFamily 是在 System.Drawing 和 System.Windows.Media 中定义的 @devio 不是警告,错误。此代码无法编译 【参考方案1】:我认为您正在寻找这样的东西:
class Program
static void Main(string[] args)
Console.WriteLine("At least we got here");//TEST
try
var installedFontCollection = new InstalledFontCollection();
var fontFamilies = installedFontCollection.Families;
var count = fontFamilies.Length;
for (int j = 0; j < count; ++j)
Console.WriteLine(fontFamilies[j].Name);
catch (Exception e)
Console.WriteLine("Error: 0", e.Message);
Console.ReadKey();
https://msdn.microsoft.com/en-us/library/0yf5t4e8(v=vs.110).aspx
【讨论】:
以上是关于为啥我的线程在“Main”中的任何内容可以运行之前就退出了?的主要内容,如果未能解决你的问题,请参考以下文章
线程“main”java.sql.SQLException中的异常:未选择数据库[重复]
为啥我在代码中的线程“main”java.lang.StringIndexOutOfBoundsException 错误中收到异常?