Je souhaite me connecter à un service Windows qui s'exécutera toutes les heures. J'utilise Parallel.ForEach
dans mon service Windows. J'utilise AdoNetAppender pour me connecter à ma base de données sqlserver.Log4net dans le service Windows et Task Parallel Library
ILog _log = LogManager.GetLogger(typeof(EmailJob));
La ligne ci-dessus signifie, nous utilisons une instance statique pour se connecter à la base de données, n'est-ce pas? Comment la connexion est-elle maintenue dans AdoNetAppender? Lorsque mon service Windows complète la première itération et quel sera l'état de la connexion d'AdoNetAppender. Est-il proche à la fois ou en attente de l'élimination du garbage collector? et quand l'itération suivante commencera, ouvrira-t-il une nouvelle connexion?
Étant donné que mon service Windows s'exécute toujours, si le récupérateur de mémoire prend du temps pour disposer de l'objet, le nombre de connexions ouvertes dépassera la limite des connexions ouvertes maximum de SQL Server. Je dois fermer ma connexion lorsque l'itération se termine et ouvrir la connexion au démarrage de l'itération. Que faire?
Un bon conseil pour poster ici est que même si cela peut être urgent pour vous, il n'est pas urgent pour quelqu'un d'autre. Veuillez lire [cette discussion de communauté] (http://meta.stackoverflow.com/q/326569/472495). – halfer