2012-04-28 14 views
8

Código F # dirigido a xbox360 utilizando xna no se compila después de convertir el proyecto a una biblioteca de clases portátil.¿Cómo crear un hilo en una biblioteca de clases portátil?

let thread = Thread(fun() -> 
    setAffinity() 

hilo obtiene garabatos rojos y el mensaje de error dice

de error 1 Este tipo tiene constructores de objetos accesibles

Efectivamente, si miro mscorlib en el Explorador de objetos, el tipo no tiene constructor Sin embargo, según MSDN, el constructor existe en xbox y en PCL.

Edición: Intenté con un C# PCL, y obtuve el mismo error.

Respuesta

7

La creación de hilos no es portátil. Su enlace está equivocado, no habla de PCL.

Este es el costo de utilizar la Biblioteca de clases portátil, es lo que sobra después de restar todo lo que no es compatible con al menos uno de los posibles objetivos. Lo cual no deja mucho, el PCL es bastante pequeño. El mayor inconveniente es un objetivo que no se menciona como compatible, sin embargo, WinRT (también conocido como Metro). Tiene una api severamente restringida.

Considera ThreadPool.QueueUserWorkItem() en su lugar. Supongo que la tarea se va a admitir algún día en la PCL. Es un trabajo en progreso en este momento.

+0

El enlace dice "Compatible en: Biblioteca de clases portátil" hacia el final. Gracias por la sugerencia sobre 'QueueUserWorkItem()', pero esa no es una opción en mi caso, ya que quiero controlar en qué núcleo se ejecuta el subproceso, y dudo que el grupo de subprocesos proporcione el tipo de juegos de baja latencia requerido. – Joh

+0

Ah, sí, eso es un error de documentación. No se puede anotar el artículo de MSDN, David Kean vigila la etiqueta en SO, así que con suerte lo ve. –

+0

¿Qué es tan "no portátil" en la creación de un nuevo hilo? Por ejemplo, si comparto código entre .net y Windows Phone? – Grigory

1

No es fácil, pero esto suena como un error y así es como procedería. Envíelo a fsbugs en Microsoft dot com

+0

'fsbugs' no se ocupan de los insectos .NET, sólo F # (como insectos el nombre lo implica). –

+0

Parecía un problema con F # creando correctamente la PCL, por lo que hice la sugerencia. –

+0

Ahora probé con un proyecto de C# y obtuve el mismo error. Por lo tanto, he eliminado la etiqueta F # de mi pregunta. Perdón por la confusion. – Joh

Cuestiones relacionadas