0

如何为我的代码使用 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
4

2 回答 2

2

使用 BackgroundWorker 或一个线程不会使您的应用程序运行得更快,但只会阻止您的应用程序没有响应。

如果您只需要一个线程,只需使用 BackgroundWorker,这就是它的意义所在。

如果在这种精确的情况下,您的listaFichero变量可以拆分为更小的列表并并行处理,并且客户端和服务器之间的带宽不是瓶颈,并且您的服务器支持并行处理,那么您可以创建多个线程。

于 2009-02-24T13:44:23.490 回答
0

老实说,只要你做得好,这并不重要。

与后台工作人员一起更容易正确完成,所以我建议这样做。

于 2009-02-24T13:38:11.320 回答