Quantcast
Channel: Windows Forms Data Controls and Databinding forum
Viewing all articles
Browse latest Browse all 2535

Memory leak in DataGridView with binding datasource.

$
0
0

I used the Microsoft DataGridView inside the tabcontrol. And assign the binding data source to DataGridView. When I run the sample,the CPU memory takes maximum of 9% alone.But after making any changes in DataGridView by designer and run the sample, now it takes the CPU Memory usage of maximum 16%.And after close the form the CPU memory usage goes to 8%. 

Please find the sample from below location,


And also please find the video it shows the memory leak,



The class file code is below,

Public Class EvtClass


#Region "Private Variable Declarations"
    Private _ID As Long
    Private _StartTimestamp As DateTime
    Private _EndTimestamp As DateTime
    Private _WO_No As Long
    Private _WO_StartTimeDbl As Double
    Private _WO_StartTime As DateTime
    Private _SKU_No As Long
    Private _SKU_Name As String
    Private _SKU_Grp As String

    Private _EvtNo As Long
    Private _ModeNo As Integer
    Private _ModeName As String
    Private _StateNo As Integer
    Private _StateName As String
    Private _PLC_DT_Code As Integer
    Private _DT_Code As Integer

    Private _Dur As Double
    Private _DurCat As String
    Private _DT_Mach As String
    Private _DT_Cat As String
    Private _DT_SubCat As String
    Private _DT_Reason As String
#End Region

#Region "Public Variable Declarations"
    Public Avail As Double
    Public Perf As Double
    Public Qual As Double
    Public OEE As Double

    Public TMaxRate As Double
    Public WO_PercComplete As Double
    Public EstTimeRemaining As Double

#End Region

#Region "Property Definitions"

    Public Property ID As Long
        Get
            Return Me._ID
        End Get
        Set(value As Long)
            Me._ID = value
        End Set
    End Property

    Public Property StartTimestamp As DateTime
        Get
            Return Me._StartTimestamp
        End Get
        Set(value As DateTime)
            Me._StartTimestamp = value
        End Set
    End Property

    Public Property EndTimestamp As DateTime
        Get
            Return Me._EndTimestamp
        End Get
        Set(value As DateTime)
            Me._EndTimestamp = value
        End Set
    End Property

    Public Property WO_No As Long
        Get
            Return Me._WO_No
        End Get
        Set(value As Long)
            Me._WO_No = value
        End Set
    End Property

    Public Property WO_StartTimeDbl As Double
        Get
            Return Me._WO_StartTimeDbl
        End Get
        Set(value As Double)
            Me._WO_StartTimeDbl = value
        End Set
    End Property

    Public Property WO_StartTime As DateTime
        Get
            Return Me._WO_StartTime
        End Get
        Set(value As DateTime)
            Me._WO_StartTime = value
        End Set
    End Property

    Public Property SKU_No As Long
        Get
            Return Me._SKU_No
        End Get
        Set(value As Long)
            Me._SKU_No = value
        End Set
    End Property

    Public Property SKU_Name As String
        Get
            Return Me._SKU_Name
        End Get
        Set(value As String)
            Me._SKU_Name = value
        End Set
    End Property

    Public Property SKU_Grp As String
        Get
            Return Me._SKU_Grp
        End Get
        Set(value As String)
            Me._SKU_Grp = value
        End Set
    End Property

    Public Property EvtNo As Long
        Get
            Return Me._EvtNo
        End Get
        Set(value As Long)
            Me._EvtNo = value
        End Set
    End Property

    Public Property ModeNo As Integer
        Get
            Return Me._ModeNo
        End Get
        Set(value As Integer)
            Me._ModeNo = value
        End Set
    End Property

    Public Property ModeName As String
        Get
            Return Me._ModeName
        End Get
        Set(value As String)
            Me._ModeName = value
        End Set
    End Property

    Public Property StateNo As Integer
        Get
            Return Me._StateNo
        End Get
        Set(value As Integer)
            Me._StateNo = value
        End Set
    End Property

    Public Property StateName As String
        Get
            Return Me._StateName
        End Get
        Set(value As String)
            Me._StateName = value
        End Set
    End Property

    Public Property PLC_DT_Code As Integer
        Get
            Return Me._PLC_DT_Code
        End Get
        Set(value As Integer)
            Me._PLC_DT_Code = value
        End Set
    End Property

    Public Property DT_Code As Integer
        Get
            Return Me._DT_Code
        End Get
        Set(value As Integer)
            Me._DT_Code = value
        End Set
    End Property

    Public Property Dur As Double
        Get
            Return Me._Dur
        End Get
        Set(value As Double)
            Me._Dur = value
        End Set
    End Property

    Public Property DurCat As String
        Get
            Return Me._DurCat
        End Get
        Set(value As String)
            Me._DurCat = value
        End Set
    End Property

    Public Property DT_Mach As String
        Get
            Return Me._DT_Mach
        End Get
        Set(value As String)
            Me._DT_Mach = value
        End Set
    End Property

    Public Property DT_Cat As String
        Get
            Return Me._DT_Cat
        End Get
        Set(value As String)
            Me._DT_Cat = value
        End Set
    End Property

    Public Property DT_SubCat As String
        Get
            Return Me._DT_SubCat
        End Get
        Set(value As String)
            Me._DT_SubCat = value
        End Set
    End Property

    Public Property DT_Reason As String
        Get
            Return Me._DT_Reason
        End Get
        Set(value As String)
            Me._DT_Reason = value
        End Set
    End Property

#End Region

End Class


And I have initialize the binding data source to DataGridView as below,

Me.EvtClassBindingSource = New System.Windows.Forms.BindingSource(Me.components)
        Me.EvtClassBindingSource.DataSource = GetType(miniMonitor.EvtClass)
     Me.DataGridView1.DataSource = Me.EvtClassBindingSource


And also I have tried the windows form with binding datasource alone, it takes more CPU memory when making any changes in form. In that below code, I have just initialize the form with binding data source alone, 

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form2
    Inherits System.Windows.Forms.Form

    'Form overrides dispose to clean up the component list.
    <System.Diagnostics.DebuggerNonUserCode()> _
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        Try
            If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            End If
        Finally
            MyBase.Dispose(disposing)
        End Try
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.
    'Do not modify it using the code editor.
    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.EvtClassBindingSource = New System.Windows.Forms.BindingSource(Me.components)
        CType(Me.EvtClassBindingSource, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()

        components = New System.ComponentModel.Container
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.Text = "Form2"
        Me.EvtClassBindingSource.DataSource = GetType(miniMonitor.EvtClass)

        CType(Me.EvtClassBindingSource, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)
    End Sub
    Friend WithEvents EvtClassBindingSource As System.Windows.Forms.BindingSource
End Class





Viewing all articles
Browse latest Browse all 2535

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>