Pregunta

Necesito múltiples hilos STA dentro de mi aplicación ASP.NET para utilizar algunos componentes COM.

I leído en alguna parte dentro de cada proceso, puede existir sólo un hilo STA. Codifiqué un proyecto de ejemplo e hice muchos hilos y establecer su estado de apartamentos a STA y trabajan con COM objetos sin ninguna excepción.

¿Es posible tener muchos hilos STA dentro de un proceso?

¿Fue útil?

Solución

Si su programa trabaja con muchos subprocesos STA, entonces ¿por qué lo preguntas si funciona? :) .NET le permite tener cualquier número de subprocesos STA, por lo que debe trabajar. Lo que se lee podría ser cierto para las aplicaciones nativas típicas con sólo un hilo principal y un bucle de mensajes, sin embargo.

Otros consejos

No hay límite inherente al número de subprocesos STA puede tener, sin embargo, es probable que desee imponer un límite tal por su cuenta.

Si usted permite que su aplicación ASP.NET para crear subprocesos STA adicionales como nuevas solicitudes de los usuarios llegan, sin limitarla, con el tiempo el número de hilos hará que el rendimiento de su aplicación a deteriorarse a medida que la cantidad de tiempo empleado por la CPU en el cambio de contexto es demasiado alta. Esto también hace que su aplicación mucho más vulnerables a los ataques de denegación de servicio.

Se puede considerar un diseño eran establece un límite para el número de subprocesos STA en base a su hardware o el perfil de los usuarios, y una vez que se alcanza el límite, poner en práctica algunas agrupación de reutilización subprocesos STA para dar servicio a las nuevas solicitudes existentes.

No hay límite superior, aparte de la memoria. Un proceso de 32 bits normalmente Peters algo tímido de 2000 hilos cuando las pilas de los hilos han consumido todo el espacio de direcciones disponibles.

Mantener las reglas en mente, no se puede llamar a un objeto que se creó en una STA de otra STA sin cálculo de referencias. Y no se olvide el bucle de mensajes es necesario, un subproceso STA debe bombear para mantener la vida y prevenir el cálculo de referencias punto muerto. Obviamente llegar a ninguna parte cerca del límite de la memoria debe estar fuertemente evitado.

No hay límite real en subproceso STA estándar, pero sólo hay un 'especial' subproceso STA para la interfaz de usuario que tiene el bucle de mensajes. Esto puede ser lo que se lee en otro lugar. Aunque la mayoría de las OCM están muy bien con cualquier subproceso STA, algunas organizaciones comunes de mercado pueden requerir el bucle de mensajes (por ejemplo, para el temporizador de relojería) que requerirá de nuevo al hilo de interfaz de usuario o un mensaje de bombeo apuntando.

Es STA mensaje de bucle requeridos en este caso?

http://blogs.msdn.com /b/cbrumme/archive/2004/02/02/66219.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top