使用BackgroundWorker或线程实现高性能

时间:2009-02-24 13:33:29

标签: .net winforms multithreading backgroundworker

如何将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 个答案:

答案 0 :(得分:2)

使用BackgroundWorker或一个线程不会使您的应用程序更快,但只会阻止您的应用程序无响应。

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

在这种精确的情况下

如果,您的 listaFichero 变量可以拆分为较小的列表并并行处理,客户端之间的带宽并且服务器不是瓶颈,您的服务器支持并行进程,然后您可以创建多个线程。

答案 1 :(得分:0)

说实话,只要你做得好就没关系。

与背景工作者合作更容易,所以我建议你这样做。