Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VB.Net 2005 Threadpool

Frage Entwicklung Visual Studio

Mitglied: kruemel666

kruemel666 (Level 1) - Jetzt verbinden

19.01.2009, aktualisiert 11:44 Uhr, 3659 Aufrufe, 1 Kommentar

Hallo zusammen,

ich habe ein kleines Programm geschrieben welches die Größe alle Shares unseres Fileservers ausliest und in eine SQL Datenbank schreibt. Da es über 1000 Shares sind gehe ich wie folgt vor: In einer For-Next schleife lese ich alle Shares in ein Array ein.
Anschließend übergebe ich alle Shares in einer 2. For-Next schleife an einen Threadpool.

Der Threadpool startet eine Sub welches dann die Größe des Shares erfasst und es in die SQL Datenbank einträgt.

Mein Problem ist jetzt das ich immer mehr Threads bekomme und das Programm den Arbeitsspeicher frisst. Meiner Meinung nach läst ein Threadpool doch nur 25 Threads zu. Also dürfte nur 25 dieser Subs laufen und wenn eins fertig ist startet er das nächste aus der Warteschlange oder lieg ich da falsch?

Zur verdeutlichung etwas Code:

Übergabe an den Threadpool:
01.
Dim ti As Object = "\\Fileserver\" & oshare.Name 
02.
                    ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf GetFolderSize), ti)
Das Sub mit Auslesen der Pfad Variable:
01.
Sub GetFolderSize(ByVal state As Object) 
02.
        Try 
03.
            Dim Dirpath = CType(state, String)
Und das Ende der Sub mit Aufruf der SQL-Schreibe-funktion und der Aktualisierung von 2 Steuerelementen:
01.
            SyncLock Me 
02.
                Me.dbentry(Dirpath, size2) 
03.
            End SyncLock 
04.
        Catch ex As Exception 
05.
            Dim DirPath As String = CStr(state(1)) 
06.
            MsgBox("Error in " & DirPath & ": " & ex.Message) 
07.
        End Try 
08.
 
09.
        Me.Invoke(New progressDelegate(AddressOf progress)) 
10.
        Me.Invoke(New txtdelegate(AddressOf timevorraus)) 
11.
End Sub
Kann mir jemand sagen wie ich die Threads beenden muß damit nicht ewig viel Ram gefressen wird?

Vielen Dank

MfG
Phil
Mitglied: kruemel666
20.01.2009 um 07:07 Uhr
Hallo zusammen,

ich habe es inzwischen geschafft das die Threads beendet werden und auch wirklich aus dem Task-Manager rausfliegen. Ich habe jetzt allerdings das Problem das der verbrauchte Arbeitsspeicher nicht sinkt.

Auch nicht wenn ich GC.Collect aufrufe. Die einzige Möglichkeit den verbrauchten Arbeitsspeicher zu senken ist mit diesem Code:
01.
Private Declare Auto Function SetProcessWorkingSetSize Lib "kernel32.dll" (ByVal procHandle As IntPtr, ByVal min As Int32, ByVal max As Int32) As Boolean 
02.
 
03.
    Public Sub SetProcessWorkingSetSize() 
04.
        Try 
05.
            Dim Mem As Process 
06.
            Mem = Process.GetCurrentProcess() 
07.
            SetProcessWorkingSetSize(Mem.Handle, -1, -1) 
08.
        Catch ex As Exception 
09.
            MsgBox(ex.ToString) 
10.
        End Try 
11.
    End Sub
Das ganze bewirkt aber nur das der ganze Müll ins Pagefile geschrieben wird. Ich hab auch meinen kompletten Quelltext schon überprüft und jede Variable mit = Nothing am Schluß geschlossen. Objekte habe ich mit .Dispose() geschlossen.

Gibt es eine Möglichkeit den Speicher den ein Thread belegt wieder frei zu geben sodass wirklich nur das im Speicher ist was auch wirklich grade läuft. Und nicht das das Programm je länger es läuft desto mehr Speicher belegt.

MfG
Phil
Bitte warten ..
Ähnliche Inhalte
Visual Studio
Variablen in VB.NET
gelöst Frage von MarcoBornVisual Studio4 Kommentare

Hallo Forum, in VB.NET gibt es ja die Möglichkeit, Variablen global oder lokal zu definieren. Zusätzlich können Variablen auch ...

Visual Studio
Automatische Treiberinstallation mit VB.NET
gelöst Frage von joehuabaVisual Studio3 Kommentare

Hallo Zusammen, Folgende Problemstellung: 1. Ich habe einen Rechner per Hand neu installiert, da fehlen einige Treiber 2. Ich ...

Visual Studio
Netzwerkdrucker installieren, vb.net
gelöst Frage von Tealk144Visual Studio

Hallo Leute, also nach langem Tüfteln habe ich jetzt einen Funktionierenden Drucker installationscode, den ich gerne mit euch teilen ...

Visual Studio
VB.Net - Datagridview Objekt Update
gelöst Frage von PatrickB90Visual Studio1 Kommentar

Guten Morgen zusammen, als neu Einsteiger im Bereich VB.Net steh ich grade vor einem Problem. In einer Form wurde ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 4 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 5 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 12 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server14 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...