次のように、Excel ファイルへの OLEDB 接続を開くとハングする Windows サービスがあります。
using (var connection = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ fileName + ";Extended Properties=\"Excel 8.0\""))
{
connection.Open();
// start using the connection
}
このコードは、コンソール アプリケーションとして実行すると正常に動作します。Visual Studio で Windows サービスをデバッグすると、connection.Open() の呼び出しに到達するまでコードにステップ インできます。その時点で、スレッドはハングします。例外はスローされません。[Break All] または [Stop Debugging] ボタンをクリックするまで、Visual Studio は応答し続けます。その時点で、Visual Studio もハングします。プロセスを強制終了すると、Visual Studio が再び応答するようになります。
なぜこれが起こるのか、それを解決する方法を知っている人はいますか?
編集: fileName は絶対パスです。ファイルはサービス自体によって書き込まれました。