Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-06-2012, 12:26   #1
manuel 66
Member
 
Iscritto dal: Jul 2009
Messaggi: 102
problema nella gestione thread [vb.net]

Buongiorno a tutti, sto creando un programma per la condivisione di file che si articola in:
-client1 (invia i dati)
-client2 (riceve i dati)

con il client 1 nn ho problemi ed ecco il codice del thread:


Codice:
Private Sub trasmetto1()

        Control.CheckForIllegalCrossThreadCalls = False

        Dim buff As Integer = buffer.Text
        Dim c As Integer = 0
        Dim totinv As Integer = 0
        Dim nb As Integer = Math.Floor(peso / buff)

        Dim res As Integer = (peso - (nb * buff))     'controlla se avanza qualche byte dalla vivisione del peso dal buffer
        sendinfo(ext & "/" & peso & "/" & buff & "/" & nb & "/" & res)


        Thread.Sleep(5000)


        For c = 0 To nb - 1
            Dim space As New FileStream(path, FileMode.Open, FileAccess.Read)
            space.Seek(c * buffer.Text, SeekOrigin.Current)
            Dim tmp(buff) As Byte
            space.Read(tmp, 0, buff)
            Thread.Sleep(Delay.Text)
            connection.Write(tmp, 0, buff)
            space.Close()
            totinv = totinv + buff
            Dim perc As Decimal = ((totinv / peso) * 100)
            Label4.Text = perc.ToString("0.00") & " %"
            barra.Value = totinv
        Next

        Thread.Sleep(1000)

        If res > 0 Then
            Dim space1 As New FileStream(path, FileMode.Open, FileAccess.Read)
            space1.Seek(nb * buffer.Text, SeekOrigin.Current)
            Dim tmp1(res) As Byte
            space1.Read(tmp1, 0, res)
            Thread.Sleep(1000)
            connection.Write(tmp1, 0, res)
            space1.Close()
        End If



        Label4.Text = "0,00 %"
        barra.Value = 0
        totinv = 0


        'inv1.Suspend()
        'inv1.Abort()
        en = 1  'abilitato
    End Sub

il problema che avevo qui e che ho nel client 2 e che la prima volta che uso il thread.. tutto ok il file viene ricevuto/inviato correttamente, ma la 2 volta..
i thread mi saltavano le istruzioni(if,aggiornamento variabili,msgbox)
nel client 1 ho risolto cosi:

prima avevo semplicemente cosi:

Codice:
dim inv1 as new thread(adressof trasmetto1)
poi ho risolto con:

Codice:
dim inv1 as thread

 Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        inv1=new thread (addressof trasmetto1)
        inv1.Start()

End Sub

invece questo non funziona nel client2.. perche ??

Codice:
    Private Sub wait()

        Dim file(8192) As Byte


        Control.CheckForIllegalCrossThreadCalls = False
        tcp = listener.AcceptTcpClient
        While (1 > 0)

            Try

                connection = tcp.GetStream
                connection.Read(file, 0, buffer) 'steam mod qui
                connection.Flush()



                If c = 0 Then
                    Dim txt As String = ASCII.GetString(File)
                    txt = txt.Trim

                    ext = txt.Substring(0, txt.IndexOf("/"))
                    Label5.Text = "ext: " & ext
                    txt = txt.Replace(ext & "/", "")
                    peso = txt.Substring(0, txt.IndexOf("/"))
                    Label6.Text = "Byte: " & peso
                    txt = txt.Replace(peso & "/", "")
                    'barra.Maximum = peso
                    buffer = txt.Substring(0, txt.IndexOf("/"))
                    Label7.Text = "buff: " & buffer
                    txt = txt.Replace(buffer & "/", "")
                    block = txt.Substring(0, txt.IndexOf("/"))
                    Label8.Text = "part: " & block
                    txt = txt.Replace(block & "/", "")
                    res = txt
                    Label2.Text = "Res:  " & res
                    barra.Maximum = peso



                    MsgBox("rivato il tutto")



                    canc(file)

                    Try
                        space = New FileStream("ciao" & ext, FileMode.Create, FileAccess.Write)
                    Catch
                        MsgBox("Errore, impossibile creare il File", , "Download")
                        Exit Sub
                    End Try

                Else                 
                    Beep()
                    space.Write(file, 0, buffer)
                    tot = tot + buffer
                    barra.Value = tot
                    Label4.Text = "peso: " & tot
                    If tot = peso Then
                        barra.Value = 0
                        Label1.Text = "0,00 %"
                        tot = 0
                        res = 0
                        c = -1
                        i = 0
                        space.Close()
                        '<<<<<<<<<<<<<
                        'receiver.Abort()
                        '>>>>>>>>>>>>>>>
                        Beep()
                    End If
                    Dim perc As Decimal = (tot / peso) * 100
                    Label1.Text = perc.ToString("0.00") & " %"
                    Label3.Text = "Pass: " & c
                    If c = block Then
                        buffer = res
                    End If
                    canc(file)

                End If
                c = c + 1
            Catch
            End Try

        End While
    End Sub
tutte le correzioni e consigli son ben accetti, grazie.

Ultima modifica di manuel 66 : 01-06-2012 alle 14:14.
manuel 66 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Una falla di ChatGPT permette di estrapo...
Piano clima, 1,34 miliardi per il bonus ...
Porsche esce definitvamente da Bugatti R...
NVIDIA App aggiunge una delle funzioni p...
Come sarebbe il mondo se la luce viaggia...
Titanio, ceramica e zaffiro per HUAWEI W...
Taglio delle accise sul gasolio prorogat...
Universal e ElevenLabs: una piattaforma ...
Astra mette in crisi i server di OpenAI:...
Phanteks EX5: disponibile il case a bloc...
Broadcom rimuove l'accesso a uno strumen...
Italo porta Starlink sui treni ad Alta V...
Le GPU costano sempre di più, ma ...
IBM e NASA hanno insegnato a un'IA a leg...
Desktop Remoto non funziona su Windows S...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v