Недостающие функции .NET в приложении в стиле Metro? - PullRequest
19 голосов
/ 17 сентября 2011

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

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

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

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

Ответы [ 4 ]

17 голосов
/ 17 сентября 2011

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

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

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

7 голосов
/ 17 сентября 2011

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

6 голосов
/ 17 сентября 2011

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

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

5 голосов
/ 11 августа 2012

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

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

...