0

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?

+0

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

Antwort

1

Die Codezeile in Ihrem Beispiel ist keine statische Protokollvariable, Sie fragen sich, wie der GC Ihre Variable erfassen wird. Dies ist nur möglich, wenn keine Referenzen mehr auf das Objekt vorhanden sind. Außerdem machen Sie viele Annahmen über das interne Arbeiten des AdoNetAppender. Ihre Verbindung wird im AdoNetAppender idd gepflegt, verwendet jedoch einen Puffer und schreibt nur, wenn der Puffer voll ist. Die Verbindungsverwaltung erfolgt über den Treiber, den Sie in Ihrer Verbindungszeichenfolge referenzieren. Sie sollten sich keine Gedanken darüber machen, ob sie offen oder geschlossen ist. Normalerweise sollten Sie sich nur dann darum kümmern, wenn Sie ein konkretes Problem durch den Logger haben. Welche Symptome sehen Sie, wenn Sie auf den Logger zeigen, dass Sie Probleme haben?

Verwandte Themen