Ich möchte in einem Windows-Dienst anmelden, der in jeder Stunde ausgeführt wird. Ich verwende Parallel.ForEach
in meinem Windows-Dienst. Ich verwende AdoNetAppender, um meine sqlserver Datenbank anzumelden. Log4net in Windows-Dienst und Task Parallel Library
ILog _log = LogManager.GetLogger(typeof(EmailJob));
Die obige Linie bedeutet, wir eine statische Instanz verwenden in der Datenbank anzumelden, nicht wahr? Wie funktioniert die Verbindung in AdoNetAppender? Wenn mein Windows-Dienst die erste Iteration abgeschlossen hat und welcher Status der Verbindung von AdoNetAppender hat. Ist es gleich in der Nähe oder wartet auf die Entsorgung des Müllsammlers? und wird beim Start der nächsten Iteration eine neue Verbindung geöffnet?
Da mein Windows-Dienst immer ausgeführt wird, wenn der Garbage Collector lange Zeit benötigt, um das Objekt zu entfernen, überschreitet die Anzahl der offenen Verbindungen das Limit der maximal geöffneten Verbindungen von SQL Server. Ich muss meine Verbindung schließen, wenn die Iteration beendet wird, und die Verbindung beim Start der Iteration öffnen. Was ist zu tun?
Ein guter Tipp für das Posten hier ist, dass es zwar dringend für Sie ist, aber nicht dringend für andere. Bitte lesen [diese Community-Diskussion] (http://meta.stackoverflow.com/q/326569/472495). – halfer