Uso de Visual C# para crear un subproceso
Puede escribir aplicaciones multiproceso en Microsoft Visual C# .NET o en Visual C#. En este artículo se describe cómo una sencilla aplicación de Visual C# puede crear y administrar subprocesos.
Versión original del producto: Visual C#
Número de KB original: 815804
Requisitos
En la lista siguiente se describen el hardware, el software, la infraestructura de red y los Service Pack recomendados que necesita:
- Windows o Windows Server
- Visual C# .NET o Visual C#
En este artículo se supone que está familiarizado con los temas siguientes:
- Programación de Visual C#
- Entorno de desarrollo integrado (IDE) de Visual Studio .NET o IDE de Visual Studio
En este artículo se hace referencia al espacio de nombres System.Threading
biblioteca de clases de .NET Framework .
Creación de una aplicación de Visual C# con subprocesos
Inicie Visual Studio .NET, Visual Studio o Visual C# Express Edition.
Cree un nuevo proyecto de aplicación windows de Visual C# denominado ThreadWinApp.
Agregue un control Botón al formulario. De forma predeterminada, el botón se denomina Button1.
Agregue un componente ProgressBar al formulario. De forma predeterminada, la barra de progreso se denomina ProgressBar1.
Haga clic con el botón derecho en el formulario y, a continuación, haga clic en Ver código.
Agregue la siguiente instrucción al principio del archivo:
using System.Threading;
Agregue el siguiente
button1_Click
controlador de eventos para Button1:private void button1_Click(object sender, System.EventArgs e) { MessageBox.Show("This is the main thread"); }
Agregue la siguiente variable a la
Form1
clase :private Thread trd;
Agregue el siguiente método a la clase
Form1
:private void ThreadTask () { int stp; int newval; Random rnd = new Random (); while (true) { stp = this.progressBar1.Step * rnd.Next (-1, 2); newval = this.progressBar1.Value + stp; if (newval > this.progressBar1.Maximum) newval = this.progressBar1.Maximum; else if (newval < this.progressBar1.Minimum) newval = this.progressBar1.Minimum; this.progressBar1.Value = newval; Thread.Sleep (100); } }
Nota:
Este es el código que subyace al subproceso. Este código es un bucle infinito que incrementa o disminuye aleatoriamente el valor de ProgressBar1 y, a continuación, espera 100 milisegundos antes de continuar.
Agregue el siguiente
Form1_Load
controlador de eventos para Form1. Este código crea un nuevo subproceso, convierte el subproceso en un subproceso en segundo plano y, a continuación, inicia el subproceso.private void Form1_Load(object sender, System.EventArgs e) { Thread trd = new Thread(new ThreadStart(this.ThreadTask)); trd.IsBackground = true; trd.Start(); }
Comprobar que funciona
Compile y ejecute la aplicación. Observe que el valor de ProgressBar1 cambia aleatoriamente. Este es el nuevo subproceso en funcionamiento.
Para demostrar que el subproceso principal es independiente del subproceso que cambia el valor de ProgressBar1, haga clic en el botón del formulario. Recibirá un cuadro de diálogo con el siguiente mensaje de error:
Este es el subproceso principal
Espere la entrada. Observe que el valor de ProgressBar1continues que se va a cambiar.
Solucionar problemas
En aplicaciones más complejas, asegúrese de sincronizar varios subprocesos al acceder a variables compartidas. Para obtener más información, consulte la instrucción lock y los temas relacionados en la documentación de ayuda en línea de Visual C# .NET.
Referencias
Para obtener más información, vea Thread (Clase).
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de