Подтвердить что ты не робот

Отсутствие возможностей .NET в приложении стиля Metro?

В основном из любопытства я начал программировать небольшой проект Metro Style в Visual Studio 2011, тот, который был выпущен в Windows Developer Preview. Он объединяет XAML для дизайна и С# (в моем проекте) для кода.

Опыт С# в основном идентичен тому, который вы получаете в Visual Studio 2008 с .NET framework 4.0, за исключением этих функций, которые мне не удалось найти:

  • System.Console, что делает отладку немного сложнее,
  • И System.Threading.Thread.Sleep(TimeSpan), что немного неудобно, так как именно то, что мне нужно прямо сейчас.

Так эти функции фактически отсутствуют/отключены, или я просто смотрю не туда? Спасибо заранее.

4b9b3361

Ответ 1

У меня нет предварительного просмотра, поэтому я не могу проверить. Но вот две мысли:

  • System.Console, вероятно, недоступен, поскольку в приложениях стиля Metro нет консоли. Проверьте, доступен ли Debug.WriteLine. Он записывается непосредственно в окно "Отладка" в Visual Studio.

  • Приложения в стиле Metro не должны блокировать потоки для длительной продолжительности. Все, что занимает больше нескольких миллисекунд, должно выполняться асинхронным образом. Посмотрите для некоторого способа выполнить асинхронный обратный вызов через некоторое время, например, таймер. Или вы можете await завершить временной интервал (например, TaskEx.Delay в Async CTP).

Ответ 2

Для "отладки printf" я предлагаю использовать методы Debug.WriteLine и/или Trace.WriteLine из пространства имен System.Diagnostics. Они печатаются в окне вывода отладчика - в VS Express, который входит в предварительный просмотр разработчика, вам нужно сначала включить это (Debug → Windows → Output).

Для Thread.Sleep, можете ли вы уточнить конкретный сценарий, для которого вы считаете необходимым?

Ответ 3

http://dougseven.com/2011/09/15/a-bad-picture-is-worth-a-thousand-long-discussions/

Я понимаю, что это просто подмножество; большая часть недостающих относится к синхронным операциям (поэтому я не удивлен, что Thread.Sleep() ушел). Вы также найдете такие вещи, как "File.Create", не могут быть вызваны синхронно.

Ответ 4

Нет Thread.Sleep(), но вы можете использовать Task.Delay(milliseconds);

Для тех, кто задается вопросом, для чего это полезно, я говорю, что использую его в debug, чтобы подчеркнуть асинхронное поведение.