2011-09-16 12 views
19

Principalmente por curiosidad, comencé a programar un pequeño proyecto de "Estilo Metro" en Visual Studio 2011, el que se lanzó en Windows Developer Preview. Combina XAML para el diseño y C# (en mi proyecto) para el código subyacente.¿Falta la característica .NET en la aplicación de estilo Metro?

La experiencia de C# es sobre todo idéntica a la que se obtiene en Visual Studio 2008 con .NET framework 4.0, a excepción de estas características que yo no era capaz de encontrar:

  • System.Console, que hace que la depuración sea un poco más difícil,
  • y System.Threading.Thread.Sleep (TimeSpan), lo cual es un poco más inconveniente ya que eso es exactamente lo que necesitaba en este momento.

Entonces, ¿estas características realmente faltan/están deshabilitadas, o acabo de buscar en el lugar equivocado? Gracias por adelantado.

Respuesta

17

No tengo la vista previa instalada, por lo que no puedo verificar. Pero aquí hay dos ideas:

  1. System.Console probablemente no esté disponible, porque no hay Consola en las aplicaciones de estilo Metro. Compruebe si Debug.WriteLine está disponible. Escribe directamente en la ventana de depuración en Visual Studio.

  2. No se supone que las aplicaciones de estilo Metro bloqueen los hilos por duraciones extendidas. Todo lo que tome más de unos pocos milisegundos se debe hacer de forma asíncrona. Mire para alguna manera de ejecutar una devolución de llamada asincrónica después de algún tiempo, por ejemplo, un temporizador. O puede ser capaz de await al final de un lapso de tiempo (como TaskEx.Delay en el CTP Async).

+7

Todas las cosas en 'TaskEx' ahora se mueven a' Task' propiamente dicho, por lo que 'aguardan a Task.Delay (ms)' que haga el truco. –

7

Para "depuración de printf", le sugiero que utilice los métodos Debug.WriteLine y/o Trace.WriteLine del espacio de nombres System.Diagnostics. Imprimen en la ventana de salida del depurador: en VS Express que viene en la Vista previa del desarrollador, deberá habilitarlo primero (Depurar -> Windows -> Salida).

Para Thread.Sleep, ¿puede aclarar el escenario específico para el que cree que es necesario?

+1

Gracias, Debug.Write funcionó. En cuanto a Thread.Sleep, lo necesitaba para prototipar rápidamente un loop, pero el Task.Delay propuesto por la respuesta anterior llenó el hueco muy bien. – Timst

+0

Gran solución: es el equivalente de Trace.WriteLine() en WPF en el espacio de nombres System.Diagnostics. – nocarrier

5

No hay Thread.Sleep(), pero se puede utilizar Task.Delay(milliseconds);

Para los que preguntan qué es útil para, digo que lo uso en depuración hacer hincapié en el comportamiento asíncrono.

Cuestiones relacionadas