Hola, tengo una aplicación C# WinForm y dentro de ella tengo un for, dentro de ese for necesito disparar ‘N’ Thread para que hagan ‘N’ tareas y pues creo que un ThreadPool seria necesario, alguien tendrá algún ejemplo de ThreadPool?
Gracias.
| ||||
![]() Hola, tengo una aplicación C# WinForm y dentro de ella tengo un for, dentro de ese for necesito disparar ‘N’ Thread para que hagan ‘N’ tareas y pues creo que un ThreadPool seria necesario, alguien tendrá algún ejemplo de ThreadPool? Gracias.
__________________ http://vazquezvega.wordpress.com/ "La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás." |
| |||
Respuesta: Ejemplo ThreadPool Bueno no sé si te servira esto: pero es un ejemplo sencillo del uso de Threads: ![]() Imports System.IO Imports System.Threading Public Class frmArchivo Private objHiloTotal As Thread Private objHiloLeer As Thread Private tl As Integer Private Sub DeshabilitarSeguridadHilos(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load pbrArchivo.Visible = False CheckForIllegalCrossThreadCalls = False End Sub Private Sub MostrarSaludo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaludo.Click MessageBox.Show("Hola", "Saludo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End Sub Private Sub MostrarDialogoAbrir(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAbrir.Click With ofdArchivo .Title = "Abrir un Archivo de texto" .Filter = "Archivos de texto|*.txt" If .ShowDialog = Windows.Forms.DialogResult.OK Then txtArchivo.Text = .FileName Me.Text = Path.GetFileName(.FileName) End If End With End Sub Private Sub TotalLineasArchivo() tl = 0 Using fs As New FileStream(txtArchivo.Text, FileMode.Open, FileAccess.Read) Using sr As New StreamReader(fs) Do While Not sr.EndOfStream sr.ReadLine() tl = tl + 1 Loop End Using End Using End Sub Private Sub LeerContenidoArchivo() Dim f As Integer = tl \ 100 Dim c As Integer = 0 pbrArchivo.Visible = True lstArchivo.Items.Clear() Using fs As New FileStream(txtArchivo.Text, FileMode.Open, FileAccess.Read) Using sr As New StreamReader(fs) Do While Not sr.EndOfStream If c Mod f = 0 Then If pbrArchivo.Value < 100 Then pbrArchivo.Value += 1 Else pbrArchivo.Value = 0 pbrArchivo.Visible = False End If End If c += 1 lstArchivo.Items.Add(sr.ReadLine()) Loop End Using End Using End Sub Private Sub LeerArchivo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLeer.Click objHiloTotal = New Thread(AddressOf TotalLineasArchivo) objHiloTotal.Start() objHiloTotal.Join() objHiloLeer = New Thread(AddressOf LeerContenidoArchivo) objHiloLeer.Start() End Sub End Class |