Applicazione appesa

lunedì 19 maggio 2008 - 16.57

diegoooo82 Profilo | Junior Member

Ciao a tutti sto facendo una applicazione che utilizza alcuni webservice che per rispondere impiegano alcuni secondi durante i quali l'applicazione mi va in palla e compare la scritta non risponde sulla barra del titolo.

ho provato a creare un nuovo thread con questo codice man on mi ha aiutato..

If Me.InvokeRequired Then Me.Invoke(New Delegate(AddressOf aggiorna)) Return End If

qualcuno ha idea di quale sia il problema?

Brainkiller Profilo | Guru

>ho provato a creare un nuovo thread con questo codice man on
>mi ha aiutato..

Esatto.

Non ho mai visto quella tecnica, te lo provo a scrivere in VB.NET è analogo.

Dim ts as ThreadStart ts=new ThreadStart(AddressOff Funzione_Che_Chiama_IlWebService) Dim t as Thread t=new Thread(ts) t.Start()

A questo punto la tua applicazione rimarrà live e rispondente e il thread separato si occuperà di richiamare il web service.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

diegoooo82 Profilo | Junior Member

ok provo Grazie tante

diegoooo82 Profilo | Junior Member

lo sto provando e mi da un errore
Operazione cross-thread non valida: è stato eseguito l'accesso al controllo 'TxtLog.Text' da un thread diverso da quello da cui è stata eseguita la creazione.

come cambio il thread al controllo?

Brainkiller Profilo | Guru

>lo sto provando e mi da un errore
>Operazione cross-thread non valida: è stato eseguito l'accesso
>al controllo 'TxtLog.Text' da un thread diverso da quello da
>cui è stata eseguita la creazione.

Attenzione, la programmazione multithreading è particolare. Per esempio in questo caso puoi variare le proprietà di un controllo solo dal Thread che li ha creati. Se provi a modificare una proprietà da un altro thread ti dà un cross-thread exception.

Leggi il paragrafetto Multithreading safety:
http://msdn.microsoft.com/en-us/library/ms951089.aspx

Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

munissor Profilo | Senior Member

Il problema non sono tanto le proprietà ma gli handle di finestra. Quindi come regola generale puoi modificare le proprietà di controllo (Classi che derivano da Control) solo dal thread che li ha creati..oppure utilizzando Invoke.
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5