vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
stetig steigende Speicherauslastung 
Autor: DomiS
Datum: 13.03.06 08:55

Hallo,

ich habe einen Cardreader seriell angeschlossen und habe mit folgendem Code eigentlich keine Probleme!
D.h. ich komme locker und leicht an die Daten heran, die über die serielle Schnittstelle geschickt werden. In der Realität sieht mein Programm ein wenig anders aus, aber um das Code-Beispiel hier klein zu halten will ich mein Problem hier an diesem Beispiel erläutern:

Public Class Form1
 
    Dim WithEvents SerialPort1 As New System.IO.Ports.SerialPort()
    Dim Wert As String
    Private Delegate Sub DelegateSub()
    Private TextboxAktualisieren As New DelegateSub(AddressOf Wertübergabe)
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
 
        With SerialPort1
            If .IsOpen Then
                .Close()
            End If
            .PortName = "COM1"
            .BaudRate = 9600
            .Parity = IO.Ports.Parity.None
            .DataBits = 8
            .StopBits = IO.Ports.StopBits.One
            .Open()
            Return
        End With
 
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button2.Click
 
        End
 
    End Sub
 
    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As _
      System.IO.Ports.SerialDataReceivedEventArgs) Handles _
      SerialPort1.DataReceived
 
        Me.Invoke(TextboxAktualisieren)
        Threading.Thread.Sleep(5000)
 
    End Sub
 
    Private Sub Wertübergabe()
 
        TextBox1.Text = SerialPort1.ReadExisting()
        MsgBox("Wert wird übergeben!")
 
    End Sub
 
End Class
Mein Programm frisst immer mehr Speicher und auch der intensive Einsatz von GarbageCollector-aufrufen, Dispose-Methoden aufrufen und Variablen auf Nothing setzen, hat keinen Erfolg gebracht.

Schön zu sehen auch an dem kleinen VB-Programm weiter oben:
Der Arbeitsspeicherbedarf steigt laut Task-Manager ständig an!
Irgendwann wird dann das ganze System ausgebremst, was ich natürlich vermeiden will.

Oder tritt dieses Problem nur bei mir auf?
An meinem COM-Port herrscht nämlich Dauerbombardierung durch den Card-Reader (habe einen RFID-Chip zu Testzwecken draufgeklebt!)

Was kann ich also tun um ein Anwachsen des Speicherbedarfs zu verhindern?
Das Problem ist ja der ständig geöffnete Com-Port.
Einerseits muss dieser ja offen sein, ich will ja schliesslich den Event Abfangen, falls dort Daten rüberkommen, andererseits scheint mein Worst-Case-Szenario (jemanden klebt einen RFID-Chip auf die Empfangsantenne) ja den Arbeitsspeicher vollzumüllen.
Wenn ich den COM-Port nicht einmalig am Anfang öffne, dann habe ich das Problem mit dem steigenden RAM-Bedarf auch nicht, allerdings gibt es dann auch keine Möglichkeit die entscheidenten DataReceived-Events abzufangen und zu verarbeiten!

Ich habe schon diverse Sachen ausprobiert wie DiscardInBuffer usw.
Der ReadBuffer selbst ist ja nur 4096 byte groß, dass es daran liegt mag man fast ausschliessen!

Zum Vergleich: Der Speicherbedarf dieses Prozesses steigt laut Task-Manager pro Sekunde um 50-100KB!!! Da der Rechner selbst "nur" 512MB hat steigt es auf einen Maximalwert von ca. 350MB an und bremst ab spätestens dann natürlich das gesamte System aus.

--> Was mache ich hier blos falsch???
--> Und noch viel wichtiger: Wie schaut die passende Lösung dazu aus?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
stetig steigende Speicherauslastung2.332DomiS13.03.06 08:55
Re: stetig steigende Speicherauslastung1.093ModeratorDaveS13.03.06 10:32
Re: stetig steigende Speicherauslastung1.070DomiS13.03.06 10:46
Re: stetig steigende Speicherauslastung1.087Oliver_G.13.03.06 10:52
Re: stetig steigende Speicherauslastung1.060immerSuchender13.03.06 10:55
Re: stetig steigende Speicherauslastung1.104DomiS13.03.06 11:06
Re: stetig steigende Speicherauslastung1.033ModeratorFZelle13.03.06 11:17
Re: stetig steigende Speicherauslastung1.121DomiS13.03.06 11:23

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel