如何将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
答案 0 :(得分:2)
使用BackgroundWorker或一个线程不会使您的应用程序更快,但只会阻止您的应用程序无响应。
如果您只需要一个线程,只需使用BackgroundWorker,这就是它的意思。
在这种精确的情况下如果,您的 listaFichero 变量可以拆分为较小的列表并并行处理,和客户端之间的带宽并且服务器不是瓶颈,和您的服务器支持并行进程,然后您可以创建多个线程。
答案 1 :(得分:0)
说实话,只要你做得好就没关系。
与背景工作者合作更容易,所以我建议你这样做。