Red de conocimiento informático - Problemas con los teléfonos móviles - VB.NET multiproceso simple

VB.NET multiproceso simple

En general, no se recomienda utilizar subprocesos múltiples, porque si hay obstáculos entre subprocesos, habrá competencia al disfrutar de los recursos y es necesario agregar bloqueos para manejarlos; No hay relación de tiempo entre subprocesos, por lo que al depurar el procesamiento asincrónico, el orden en que finaliza el procesamiento puede ser inconsistente con el orden en que comienza el procesamiento (el autor ya descubrió este problema durante la depuración).

Para resolver el problema que planteó, utilizamos subprocesos múltiples utilizando el control de procesamiento asincrónico BackgroundWorker.

El código ha sido depurado y aprobado. Bienvenido a comunicarse. Si tiene alguna pregunta, deje QQ u otra información de contacto.

El código es el siguiente, con una captura de pantalla del programa adjunta.

'------------------------------------------ --- ---------

¿Importaciones?System.ComponentModel?'Importar espacio de nombres de control asíncrono

Público?Clase?Form1

Privado ?¿Cuántos ?As?Integer?=?10

Privado?Número de análisis (0?A?¿Cuántos?-?1) como trabajador en segundo plano

Subbotón privado1_Click(ByVal remitente?Borrar ()

creatNewBackgroundWorker()

addHandle()

startWork()

Fin?Sub

Privado ?Sub ?creatNewBackgroundWorker()

For?i?As?Integer?=?0?To?AnalysisNumber.Length?-?1

AnalysisNumber(i) =?New?BackgroundWorker

Siguiente

Fin?Sub

Privado?Sub?addHandle()

Para?i?As?Integer?=?0 ?A ?AnalysisNumber.Length?-1

AddHandler?AnalysisNumber(i).DoWork, DirecciónDe?AnalysisNumber_DoWork

AddHandler?AnalysisNumber(i).RunWorkerCompleted, ?DirecciónDe?AnalysisNumber_RunWorkerCompleted

Siguiente

Fin?Sub

Privado?Sub?startWork()

Para?i.As Entero =?0?A?9

¿Dim?temp(0?To?9)?As?Integer

For?j?As?Integer?=?1?To?10

temp( j?-?1)?=10 * i j

Siguiente

AnalysisNumber(i).RunWorkerAsync(temp)

Siguiente

End?System.ComponentModel.DoWorkEventArgs)

Dim?data?As?Integer()

data?=?CType(e.Argument,?Integer())

¿Dim?temp?As?Integer

Para?i?As?Integer?=?1

temp=data(i)

datos( i)=temp*temp

Siguiente

e.Result=datos

Fin?Sub

Privado?Sub?AnalysisNumber_RunWorkerCompleted (ByVal ?remitente?Como?Objeto,?ByVal?e?Como?Sys

tem.ComponentModel.RunWorkerCompletedEventArgs)

Dim?data?As?Integer()

data?=?CType(e.Result,?Integer())

Para?i?As?Integer?=?1

ListBox1.Items.Add(data(i))

Siguiente

Fin?Clase