2009-02-24 4 views
0

Как использовать BackgroundWorker или Threading для моего кода. Я обновляю TreeView (Winforms), и я вызываю службу WCF.Использование BackgroundWorker или Threading для высокой производительности

Любые предложения, пожалуйста. С уважением.

Заранее спасибо

AdministradorUILogging.TrazarDebug("PanelArbolFicheros. tslGuardarArbol_Click") 
Dim listaFichero As New List(Of Fichero) 

Windows.Forms.Cursor.Current = Cursors.WaitCursor 

Me.TreeViewGB1.SuspendUpdate() 

For Each nodo As NodoArbol In TreeViewGB1.Nodes 

ProcesarNodo(nodo, listaFichero) 

Next 

Me.TreeViewGB1.ResumeUpdate() 

' Cambiamos el cursor , tener en cuena si hacerlo asincrono ' 

Try 

Using bfll As New ComunBfll() 

bfll.AltaManualListaFicheros(listaFichero) 

Mensajes.InformacionGuardada() 

End Using 

Catch ex As WCF.ServicioBase.Contrato.Excepciones.NoExisteOperacionException 

Mensajes.AdvertenciaErrores("No existe la operación") 

Catch ex As WCF.ServicioBase.Contrato.Excepciones.NoExisteExpedienteException 

Mensajes.AdvertenciaErrores("No existe el expediente") 

Catch ex As WCF.ServicioBase.Contrato.Excepciones.ConsistenciaException 

Mensajes.AdvertenciaErrores("Inconsistencia detectada al superar el máximo permitido de ficheros para un tipo documental") 

Catch ex As Exception 

AdministradorUILogging.TrazarError(Me.[GetType]().FullName & " -> " & System.Reflection.MethodBase.GetCurrentMethod().Name & "." & ex.Message) 

ExcepcionesIUUtil.ProcesarExcepcionPresentacion(ex, Me.Container) 

End Try 

InicializarArbol() 

Windows.Forms.Cursor.Current = Cursors.Arrow 
+0

Пожалуйста, отформатируйте свой код, это больно XD – ybo

+0

согласовано; отступы - ваш друг. – Ricket

+0

Я верю, что здесь есть тег кода, просто для кода. – Ricket

ответ

0

Чтобы быть честным, это не имеет значения до тех пор, как вы делаете это правильно.

Это проще сделать правильно с работником фона, поэтому я предлагаю сделать это с этим.

2

Использование BackgroundWorker или Один поток не заставит ваше приложение работать быстрее, но просто не позволит вашему приложению не отвечать.

Если вам нужен только один поток, просто используйте BackgroundWorker, вот для чего он предназначен.

Если в этом точном случае ваш listaFichero переменная может быть разделен на меньшие списки и обрабатываются параллельно, и пропускную способность между клиентом и сервером не является узким местом, и ваш сервер поддерживает параллельный процесс, , то вы можете создать несколько потоков.

Смежные вопросы