从另一个线程访问Excel对象模型

我正在写一个VB.NET库,这将有助于生成Excel报告。
我是.NET / VS2010新手,很抱歉,如果我想做错的事情。
我需要的一个function是启动一个线程来执行一些工作(从Access数据源刷新工作簿)的例程,而主线程检查是否有任何对话框因为刷新失败而在Excel窗口中popup。

我遇到的问题是新线程无法引用Excel.Application对象。 它不会产生错误,只会冻结。
这里是我的情况的演示:

Imports System.Threading Imports System.Diagnostics Imports System.Runtime.InteropServices Imports Microsoft.Office.Interop Public Class xlTest Public xlApp As Excel.Application Sub DoBackgroundStuff() MsgBox ("DoBackgroundStuff() says: " & xlApp.Version) End Sub Sub New() xlApp = New Excel.Application MsgBox ("New() says: " & xlApp.Version) Dim t As New System.Threading.Thread(AddressOf DoBackgroundStuff) t.Start() Do While t.IsAlive System.Threading.Thread.Sleep (100) Loop xlApp.Quit() End Sub End Class 

尝试引用XlApp的任何部分时,DoBackgroundStuff过程会冻结,而不会引发exception。 如果我在DoBackgroundStuff里面添加一个断点,然后试着看XlApp,那么它的所有属性都会变成“无法评估expression式”。
– 任何其他类的成员都可以通过线程读取。
– 我已经通过从进程ID(它工作得很好)获取Excel.Application对象,尝试了一种解决方法,但由于此方法使用MainWindowHandle,它会失败,如果Excel窗口不可见,这使解决方法无法使用我。

请指点我做错了什么。
非常感谢!