Использование BackgroundWorker или Threading для высокой производительности - PullRequest
0 голосов
/ 24 февраля 2009

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 24 февраля 2009

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

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

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

0 голосов
/ 24 февраля 2009

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

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

...