Rotes Kreuz bei Datagridview

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von timon.

    Rotes Kreuz bei Datagridview

    Hallo ich habe ein riesen Problem. Ich führe alle 5 Sekunden diesen Code:

    Quellcode

    1. Using cn As New MySqlConnection(server)
    2. cn.Open()
    3. Dim da As New MySqlDataAdapter(query, cn)
    4. Dim dt As New DataTable
    5. da.Fill(dt)
    6. If Not dt.Rows.Count = DataGridView1.Rows.Count Then
    7. DataGridView1.DataSource = dt
    8. End If
    9. cn.Close()
    10. End Using


    mit einem Threading.Timer aus. Irgendwann wird das DGV - Control aber mit einem Roten Kreuz überdeckt und ist nicht mehr erreichbar. Weis jemand wie ich das fixen kann, oder was das Problem ist ?

    Ich danke schon mal im Vorraus :) :D

    Grüße
    :D 8o
    Moin,

    Das Problem hatte ich auch, habe es einigermaßen mit einem Datgridview.refresh unter Kontrolle bekommen.
    Hier scheint es einige Probleme beim update zwischen Datatable und Datagridview zu geben.

    gruß

    timon schrieb:

    Threading.Timer
    arbeitet nicht im Main-Thread.
    Probier mal einen System.Windows.Form.Timer oder invoke den Zugriff:

    VB.NET-Quellcode

    1. BeginInvoke(Sub() DoAnything())
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Rattenfänger schrieb:

    aber auch bei. 100ms.
    Guter Hinweis. :thumbup:
    @timon Kann es sein, dass der Timer zuschlägt, wenn die Routine vom letzten Tick noch nicht verlassen wurde?
    Teste diese Blockierung:

    VB.NET-Quellcode

    1. Private Flag As Boolean = False
    2. Private Sub Timer_Tick(...)
    3. If Flag Then Return
    4. Flag = True
    5. ' Do Anything (Dein Prozedere)
    6. Flag = False
    7. End Sub

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!