2011-09-16 33 views
19

主要是出于好奇,我开始在Visual Studio 2011中编写一个小型的“Metro Style”项目,这个项目是在Windows Developer Preview中发布的。它将XAML用于设计和C#(在我的项目中)用于代码隐藏。Metro风格应用程序中缺少.NET功能?

C#的经验几乎等于你上的Visual Studio 2008和.NET Framework 4.0中的一个,保存这些功能,我是不是能找到:

  • System.Console,这使得调试更加困难,因为这正是我现在需要的,所以它更加不方便,因为它更加不方便。

那么,这些功能实际上是缺失/禁用,还是我只是看错了地方?提前致谢。

回答

17

我没有安装预览,所以我无法检查。但这里有两个想法:

  1. System.Console可能不可用,因为Metro风格的应用程序中没有控制台。检查是否可用Debug.WriteLine。它直接写入Visual Studio中的调试窗口。

  2. Metro风格的应用程序不应该阻塞线程延长的持续时间。所有需要超过几毫秒的应该以异步方式完成。查看 以便某种方式在一段时间后执行异步回调,例如计时器。或者你也许可以在一段时间内完成(比如Async CTP中的TaskEx.Delay)。

+7

'TaskEx'中的所有东西现在都移到'Task'正确的位置,所以'await Task.Delay(ms)'应该做到这一点。 –

7

对于“printf调试”,我建议您使用来自System.Diagnostics名称空间的Debug.WriteLine和/或Trace.WriteLine方法。它们打印到调试器输出窗口 - 在Developer Preview中的VS Express中,您需要首先启用它(调试 - > Windows - >输出)。

对于Thread.Sleep,您能否澄清您认为需要的具体情况?

+1

谢谢,Debug.Write工作。至于Thread.Sleep,我需要它来快速建立一个循环的原型,但上面的答案提出的Task.Delay很好地填补了这个空白。 – Timst

+0

伟大的解决方案 - 这与System.Diagnostics名称空间中WPF中的Trace.WriteLine()等效。 – nocarrier

5

没有Thread.Sleep(),但你可以使用Task.Delay(milliseconds);

对于那些想知道什么是有用的,我说我用它在调试强调异步行为。

相关问题