我有一个由 WPF 应用程序调用的 WCF 服务(实际上是几个),都在 .NET 4.0 下。使用 nsoftware 的 QuickBooks Integrator 5.0(QuickBooks SDK 的 .NET 包装库),我的大部分例程都可以正常工作。但是,当其中一些从新线程运行时,并且出现错误,尤其是无法打开 QuickBooks 文件的错误时,我会收到各种奇怪的错误,包括 SEHException,两者都是“无效 arg 状态” util”和 QBUtilities.dll 中的“未找到过程入口点”,以及访问异常冲突。
例如,当直接从客户端调用时,例程按预期工作。假设我故意加载了错误的 QuickBooks 文件(意味着 QuickBooks 无法打开我的应用程序期望的文件;一个致命的可捕获错误)并调用它:
GetCustomerWithQB(int CustID)
{
.. set up code
..
try {
..
..
toReturn.QBCustomer.QBCustomer.Get(QuickBooksId); // this goes to QB to do the fetch
}
catch (nsoftware.InQB.InQBException x)
{
// we get, correctly, a 602 "there is a different file open" error.
}
}
但是,如果我从服务中调用该例程,则会产生一个新线程:
Task.Factory.StartNew(delegate { GetCustomerWithQB(CustID); });
然后我得到了上面的各种错误。GRRR。帮助?