2009-12-10 11 views
2

Y a-t-il un moyen de savoir qu'un appel à TextReader.Read ou à TextReader.ReadToEnd va se bloquer sans lancer d'exception avant de faire l'appel?TextReader Read et ReadToEnd se bloque sans lever d'exception


try 
{ 
using (var filterReader = new EPocalipse.IFilter.FilterReader(tempFileName)) 
{ 
    mediaContent = filterReader.ReadToEnd(); 
} 
} 
catch (Exception e) 
{ 
Log.Error("DealerPortalIndex Error on file: " + tempFileName, e, this); 
mediaContent = string.Empty; 
} 

filterReader.ReadToEnd() se bloque et ne jette exception sur un certain fichier .xls (fichier peut-être plus)

J'ai aussi essayé d'utiliser un filterReader.Read (char {}, int, int) lire bloc et obtenir le même problème.

+0

Quelle est la taille des fichiers que vous essayez de lire? –

+0

Ce fichier est seulement 179kb et il s'ouvre très bien dans Excel. – mbalkema

Répondre

7

(Vous dites TextReader dans votre code, mais l'exemple est en utilisant le module EPocalips IFilter.)

Je pense qu'il est un bogue dans EPocalipse IFilter. Je ne sais pas comment leur code est mis à jour, mais je me souviens de quelque chose dans le même sens il y a quelques années lorsque je travaillais avec IFilters et que j'utilisais le code EPocalipse.

Vous devriez l'exécuter dans le débogueur et casser le code pour voir où il est suspendu dans la bibliothèque EPocalipse. Très probablement, il est coincé dans une boucle.

[Éditer] J'ai trouvé mon ancien code mis à jour et l'ai mis sur skydrive (Epocalipse.IFilter.zip). Voyez si cela résout vos problèmes. Il a la détection pour les boucles d'analyse IFilter infinies, et excelle les fichiers avec des cellules verrouillées.

+0

J'ai téléchargé le code, construit et ajouté dll pour remplacer le mien. Maintenant, il suspend le processus worker sur le tout premier pdf qu'il frappe. Je ne demande pas de support pour l'exemple de code. J'apprécie ton aide. Juste FYI. – mbalkema

+0

Cela fait un certain temps que j'ai utilisé ce code afin qu'il puisse échouer :) Quel PDF IFilter utilisez-vous, et de quelle façon je peux obtenir une copie du fichier à tester? Et avez-vous testé le code sur votre fichier excel problématique? –

+0

J'ai fini par utiliser un mélange du code que vous avez posté et du code que j'avais déjà. J'ai surtout utilisé les contrôles supplémentaires pour les codes retour de filtre et les boucles infinies et les exceptions de lancement. Merci encore pour votre aide. J'indexe maintenant plus de 5000 documents de types assortis avec succès. – mbalkema