C#:为什么我的后台工作线程在没有';T

C#:为什么我的后台工作线程在没有';T,c#,backgroundworker,C#,Backgroundworker,C#,使用VS2010,我得到了一些毫无意义的东西 在启动时,我的程序需要从文本文件中加载几百k。在确保加载代码正常工作后,我将其放入后台线程。只要它是从IDE内部运行的,一切都很好,但是当它独立运行时,线程会说它已经完成了。这当然是繁荣 触发代码: BackgroundWorker Background = new BackgroundWorker(); Background.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Da

C#,使用VS2010,我得到了一些毫无意义的东西

在启动时,我的程序需要从文本文件中加载几百k。在确保加载代码正常工作后,我将其放入后台线程。只要它是从IDE内部运行的,一切都很好,但是当它独立运行时,线程会说它已经完成了。这当然是繁荣

触发代码:

BackgroundWorker Background = new BackgroundWorker();
Background.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DatabaseLoaded);
Background.DoWork += new DoWorkEventHandler(delegate { Database.Load(); });
Background.RunWorkerAsync();
而正在蓬勃发展的是
DatabaseLoaded()

我放置了一些消息框来跟踪发生了什么:加载()方法的第一行和最后一行,以及加载()数据库的第一行

在IDE中,这会像我预期的那样触发:
Load()
开始,
Load()
完成,
DatabaseLoaded()
。但是,当独立运行时,我会得到
Load()
开始、
DatabaseLoaded()
,然后是未处理的异常框(加载程序甚至无法构建空表,更不用说填充它们了)


是我疯了还是Microsoft?

RunWorkerCompleted
将在出现错误时调用(例如
Database.Load()
中未处理的异常)。检查
RunWorkerCompletedEventArgs的
Error
属性

可能从
数据库.Load()引发异常
BackgroundWorker
在触发
RunWorkerCompleted
事件之前捕获任何未处理的异常。查看
数据库加载中的
RunWorkerCompletedEventArgs.Error
属性(错误)
几乎同时发布了两个答案:-)看看谁会获得更多的投票会很有意思:-事实上你的是在5分钟后发布的。它刚刚为我刷新了,我想我在两个答案都发布后打开了问题根据“xxxx前的回答”。@gmcalab是的,我显然在.NET Reflector中又花了几分钟……就是这样。出于某种原因,它返回了一个不同的路径GetExecutionGassembly()。Location没有找到所有内容。