私は、すべて.NET 4.0でWPFアプリケーションによって呼び出されるWCFサービス(実際にはいくつか)を持っています。nsoftware(QuickBooks SDK用の.NETラッパーライブラリ)のQuickBooks Integrator 5.0を使用すると、ほとんどのルーチンが正常に機能します。ただし、それらの一部が新しいスレッドから実行され、エラーが発生した場合、特にQuickBooksファイルを開くことができない場合は、SEHExceptionを含むさまざまな奇妙なエラーが発生します。どちらも「無効な引数ステータス」です。 QBUtilities.dllの「util」と「プロシージャエントリポイントが見つかりません」、およびアクセス例外違反。
たとえば、ルーチンがクライアントから直接呼び出された場合、期待どおりに機能します。意図的に間違った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); });
次に、上記のさまざまなエラーが発生します。GRRRR。ヘルプ?