Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584

    vb.net thread che dopo alcune operazioni diventa lentissimo

    salve a tutti ho questo thread:
    codice:
            SyncLock Me.LST_ElencoCorr
                t = New System.Threading.Thread(AddressOf carica_correntisti)
                t.Start()
            End SyncLock
    il bello è che spingendo il punsante di ricerca e facendolo partire va tutto bene
    poi ase faccio diverse operazioni sull tabella e riprovo a ricari care il thread ecco che diventa lensissimo e sulla listview compaiono sfarfallii

    da cosa puo dipendere?
    p.s.
    l'istruzione sql cmq nn viene alterata

    p.s.2
    proprio ora ho riprovato a ricaricatre 3 volte e mi da questo errore:
    codice:
    Eccezione non gestita di tipo "System.InvalidOperationException" in microsoft.visualbasic.dll
    
    Informazioni aggiuntive: Questo insieme ha raggiunto la funzionalità massima.
    uffaaaaaaaaaaah
    mi ha datoerrore nella classe, proprio quanto cerco di acricare la listview su titolo:
    codice:
    .Items.Add(Res("IdCliente"))
                    .Items(i).SubItems.Add(Res("Titolo") & "")
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  2. #2
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    forse ho capito da cosa deriva

    nel codice all'evento columnClick della listview ora ho commentato questo:
    codice:
            Colonna = e.Column
            '     Me.LST_ElencoCorr.ListViewItemSorter = New ListViewItemComparer(e.Column)
    
    
            '    If Me.LST_ElencoCorr.Sorting = SortOrder.Ascending Then '1 ' e.Column
            '   Me.LST_ElencoCorr.Sorting = SortOrder.Descending
            '  Else
            '     Me.LST_ElencoCorr.Sorting = SortOrder.Ascending
            'End If
    qestoera un odice che ho trovato su internet per ordinare i dati della listview in base alla colonna su cui faccio click
    uff pero mi serviva questa funzioanlita
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    xche come oggetto di lock usi SyncLock Me.LST_ElencoCorr ??? che sarebbe la listview ???

  4. #4
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    Originariamente inviato da cassano
    xche come oggetto di lock usi SyncLock Me.LST_ElencoCorr ??? che sarebbe la listview ???
    risposta 1
    lo suggerisce stesso la microsoft di "lokkare" il contrallo su cui si sta facendo il thread

    risposta 2

    la listview è quell'oggetto che puoi inserire colonne e righe nominate rispettivamente in :columns e items

    ha molte proprieta tra cui il sort che consente di ordinare i dati caricati su di essa
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  5. #5
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    la risposta 2 la sapevo volevo sapere solo la 1 ,io uso una variabile oggetto invece ,non credo ci siano molte differenze.

  6. #6
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    ok sono venuto alla conlclusione
    il motivo era dell'ordinamento della lsitview
    che qundo clicco sullla colonna ed ordino
    e rifaccio il caricamento diventa lento

    ho persino provato a mettere il sortorder =none ma niente da fare

    avete un modo per ordinare una listview ?
    grazie
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  7. #7
    Io il thread lo gestirei meglio

    Prima cosa usa Join, cosi' occupi una risorsa solo per il thread e fino a che non finisce, questo perchè anche se usi net IL THREAD MULTIPLO funziona solo su macchina a 64 Bit e la tua non credo sia cosi'.

    Poi controllalo, guarda lo stato del thread e se è attivo lokka tutto, altrimenti si impalla.

    Comunque per thread multipli usa il thread ma per singoli come questo il DoEvents va benissimo...


  8. #8
    Da MSDN Classe esempio per ordinare items nella listView

    codice:
    Imports System
    Imports System.Windows.Forms
    Imports System.Drawing
    Imports System.Collections
    
    
    Namespace ListViewSortFormNamespace   
       
       Public Class ListViewSortForm
          Inherits Form
          
          Private listView1 As ListView
    
          Public Sub New()
             ' Create ListView items to add to the control.
             Dim listViewItem1 As New ListViewItem(New String() {"Banana", "a", "b", "c"}, -1, Color.Empty, Color.Yellow, Nothing)
             Dim listViewItem2 As New ListViewItem(New String() {"Cherry", "v", "g", "t"}, -1, Color.Empty, Color.Red, New Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, CType(0, System.Byte)))
             Dim listViewItem3 As New ListViewItem(New String() {"Apple", "h", "j", "n"}, -1, Color.Empty, Color.Lime, Nothing)
             Dim listViewItem4 As New ListViewItem(New String() {"Pear", "y", "u", "i"}, -1, Color.Empty, Color.FromArgb(CType(192, System.Byte), CType(128, System.Byte), CType(156, System.Byte)), Nothing)
    
             'Initialize the ListView control and add columns to it.
             Me.listView1 = New ListView()
    
             ' Set the initial sorting type for the ListView.
             Me.listView1.Sorting = SortOrder.None
             ' Disable automatic sorting to enable manual sorting.
             Me.listView1.View = View.Details
             ' Add columns and set their text.
             Me.listView1.Columns.Add(New ColumnHeader())
             Me.listView1.Columns(0).Text = "Column 1"
             Me.listView1.Columns(0).Width = 100
             listView1.Columns.Add(New ColumnHeader())
             listView1.Columns(1).Text = "Column 2"
             listView1.Columns.Add(New ColumnHeader())
             listView1.Columns(2).Text = "Column 3"
             listView1.Columns.Add(New ColumnHeader())
             listView1.Columns(3).Text = "Column 4"
             ' Suspend control logic until form is done configuring form.
             Me.SuspendLayout()
             ' Add Items to the ListView control.
             Me.listView1.Items.AddRange(New ListViewItem() {listViewItem1, listViewItem2, listViewItem3, listViewItem4})
             ' Set the location and size of the ListView control.
             Me.listView1.Location = New Point(10, 10)
             Me.listView1.Name = "listView1"
             Me.listView1.Size = New Size(300, 100)
             Me.listView1.TabIndex = 0
             ' Enable editing of the items in the ListView.
             Me.listView1.LabelEdit = True
             ' Connect the ListView.ColumnClick event to the ColumnClick event handler.
             AddHandler Me.listView1.ColumnClick, AddressOf ColumnClick
    
             ' Initialize the form.
             Me.AutoScaleBaseSize = New Size(5, 13)
             Me.ClientSize = New Size(400, 400)
             Me.Controls.AddRange(New Control() {Me.listView1})
             Me.Name = "ListViewSortForm"
             Me.Text = "Sorted ListView Control"
             ' Resume layout of the form.
             Me.ResumeLayout(False)
          End Sub 'New
    
    
          ' ColumnClick event handler.
          Private Sub ColumnClick(ByVal o As Object, ByVal e As ColumnClickEventArgs)
             ' Set the ListViewItemSorter property to a new ListViewItemComparer object.
             Me.listView1.ListViewItemSorter = New ListViewItemComparer(e.Column)
             ' Call the sort method to manually sort the column based on the ListViewItemComparer implementation.
             listView1.Sort()
          End Sub
    
       End Class
    
       ' Implements the manual sorting of items by columns.
       Class ListViewItemComparer
          Implements IComparer
    
          Private col As Integer
    
          Public Sub New()
             col = 0
          End Sub
    
          Public Sub New(ByVal column As Integer)
             col = column
          End Sub
    
          Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
             Implements IComparer.Compare
             Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
          End Function
       End Class
    End Namespace

  9. #9
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    ok ma il doevents dove lo metto nel ciclo che carico la lsita?

    poi il codcie per ordinare la listview lo ho preso anche io da li, ma ordina solo ascendente

    p.s.
    nel tuo sito c'era anche un mdodo per gestire ithread ma pare che da errore (uff volevo prnderlo da li)
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  10. #10
    No e che sto scrivendo articoli per dot2max e quando li ho finiti completo anche quelli sul mio sito ...

    For x as Int32 = 0 to 100
    'comando
    Application.DoEvents()
    Next

    Sempre dopo l' istruzione che rallenta ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.