Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
System.Timers.Timer
lunedì 11 luglio 2005 - 13.26
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
lun 11 lug 2005 - 13:26
Ragazzi mi trovo in un problema che non riesco a trovare un'uscita...
io ho un Thread che esegue una connessione remota ad un server web e poi uploda dei file video, qui funziona tutto. Io ho voluto implementare il servizio facendo vedere contemporaneamente i byte trasferiti e qui nasce il problema, come vedrete nel codice che vi ho postato io utilizzo la classe System.Timers.Timer per avviare un timer che controlla i byte uplodati, solo che se il risultato lo assegno ad una label sulla fom non funziona, mentre se lo assegno ad una msgbox frunziona perfettamente..Navigando sulla rete mi hanno detto di utilizzare il metodo Invoke, mi hanno dato degli esempi ma non sono riuscito a capire bene la sua funzione. Con il codice che vi ho postato mi potete far vedere dove sbaglio e darmi una soluzione?
Ciao e grazie
Fabio
CODICE:
Private avvio As New System.Threading.Thread(AddressOf sendfile)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim avvio As New System.Threading.Thread(AddressOf sendfile)
avvio.Start()
End Sub
Private Sub sendfile()
SyncLock (Me)
Me.Panel1.Visible = True
Dim connesso As Boolean
connesso = InternetGetConnectedState(0&, 0&)
Dim cn As Integer
InternetGetConnectedState(cn, 0&)
If connesso = True Then
Try
Cursor.Current = Cursors.WaitCursor
Me.Label3.Text = "Inserimento metadati in corso..."
System.Windows.Forms.Application.DoEvents()
REM set_file()
Dim str As String
str = "c:\pltv\flvmdi.exe " & Me.Label2.Text & " /eCopyright-Provincialatina.tv"
Dim result As Integer
result = Shell(str, AppWinStyle.MinimizedFocus, True)
System.Windows.Forms.Application.DoEvents()
If result = 0 Then
Me.Label3.Text = "Trasferimento in corso..."
End If
System.Windows.Forms.Application.DoEvents()
conn.setRemoteHost("000.000.0000.00")
conn.setRemotePort(21)
conn.setRemoteUser("prova") : conn.setRemotePass("prova")
conn.chdir("video")
System.Windows.Forms.Application.DoEvents()
Dim p As New System.Timers.Timer
AddHandler p.Elapsed, AddressOf prova
p.Interval = 1000
p.Enabled = True
System.Windows.Forms.Application.DoEvents()
conn.upload(Me.Label2.Text)
conn.chdir("")
conn.close()
System.Windows.Forms.Application.DoEvents()
Cursor.Current = Cursors.Default
Me.Panel1.Visible = False
MsgBox("Trasferimento terminato con successo", MsgBoxStyle.Information)
avvio.Abort()
Catch
MsgBox(Err.Description)
p.Stop()
p.Enabled = False
conn.chdir("")
conn.close()
Cursor.Current = Cursors.Default
Me.Panel1.Visible = False
Exit Sub
End Try
Me.Panel2.Visible = True
System.Windows.Forms.Application.DoEvents()
Dim fr As New Form2
fr.caricadb()
System.Windows.Forms.Application.DoEvents()
Me.Panel2.Visible = False
fr.ShowDialog(Me)
Else
MsgBox("Attenzione connessione internet non attiva, impossibile collegarsi al server", Msg
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 11 lug 2005 - 15:42
Ciao,
io di solito procedo così. Creo un ThreadStart che punta a una funzione contenuta nella form. Creo un Thread a cui passo il ThreadStart appena creato e faccio partire il thread con il metodo Start.
Nella funzione puntata da TheadStart hai accesso agli oggetti della Form. Non ti garantisco però che sia thread safe.
ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
lun 11 lug 2005 - 16:45
potresti farmi vedere un esempio in base al codice che ho postato?
Ciao
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !