Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Vb.Net] Aiuto con l'utilizzo dei thread

    Un saluto a tutti, è la prima volta che mi trovo ad utilizzare i thread in vb.net e mi servirebbe un aiuto per il corretto utilizzo, il codice da me utilizzato è il seguente e richiede la visualizzazione di un form:

    codice:
    Dim thread As New System.Threading.Thread(AddressOf Add.ShowMe)
    thread.Start()
    Il problema è che mi visualizza la finestra per un secondo e poi scompare, quale può essere il problema secondo voi?

    Grazie in anticipo per l'aiuto

  2. #2
    Up

    se qualcosa non è chiaro fatemelo presente che cercherò di chiarire

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    In effetti non hai indicato niente dello scenario in cui operi.
    A cosa ti serve il thread...?, perchè lo usi così...?

    Ti ricordo quando indicato nella guida:
    Nel caso sia necessario un maggiore controllo sul comportamento dei thread dell'applicazione, si consiglia di gestirli personalmente. È tuttavia necessario tenere presente che la scrittura di applicazioni multithread complesse può essere difficile. L'applicazione potrebbe non rispondere o essere soggetta a errori temporanei dovuti a race condition. Per ulteriori informazioni, vedere Componenti thread-safe.

    Ed è proprio quello che stai tentando di fare tu.
    Sei sicuro che sia questa la strada che devi percorrere?


  4. #4
    Grazie della risposta vi spiego in breve che succede:

    il programma è collegato ad una periferica esterna tramite seriale, acquisisce i dati e rimane sempre in ascolto(questo perchè non ho trovato una funziona che mi indichi la fine o la pausa di una ricezione), quando riceve un certo dato va a controllare su un file tipo xml, che viene utilizzato come database, se è presente, se lo è e c'è un altra condizione dovrebbe mostrare la finestra per inserire un valore tramite textbox che poi verrà scritto nel db.
    Un esempio potrebbe essere questo:

    codice:
    Classe form principale
    
    'riceve il dato dalla periferica
    private sub ricevi(ByVal str As String)
    
    'questo è il modo che mi sono inventato per sapere che la ricezione del dato è terminata
    if str.length = 22 Then
    
    Dim db As New Database
    
    db.check(str)
    
    End if
    
    
    'di seguito vengono eseguiti altri controlli all'interno di questa sub
    ..
    ....
    .....
    .......
    
    End Sub
    _____________________
    
    Classe database
    
    public sub check(ByVal str As String)
    
    
    if node.childnode ...... = str Then
    
    Else
    
    'se faccio così mi compare la finestra ma mi appare bianca, quindi bloccata
    
    Add.Show()
    
    'se faccio così mi appare come detto per un secondo poi scompare
    
    Dim thread As New System.Threading.Thread(AddressOf Add.Show)
    thread.Start()
    
    End If
    
    End Sub
    Il fatto che si blocca la finestra mi fa proprio pensare che ci sia bisogno di multithreading perchè evidentemente non essendo finita la sub ricevi il programma si pianta

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 © 2026 vBulletin Solutions, Inc. All rights reserved.