Metro风格应用中缺少的.NET功能?

19

出于好奇,我开始在Visual Studio 2011中编写一个小型的“Metro Style”项目,这是在Windows Developer Preview中发布的。它结合了用于设计的XAML和用于代码的C#(在我的项目中)。

C#的使用体验与在.NET Framework 4.0上使用Visual Studio 2008几乎相同,只有以下一些特性我无法找到:

  • System.Console,这使得调试有些困难,
  • System.Threading.Thread.Sleep(TimeSpan),这有点不方便,因为这正是我现在需要的。

所以这些功能实际上是缺失/禁用的,还是我只是没找到正确的位置?先谢谢了。

4个回答

17

我没有安装预览版,因此无法检查。但以下是两个建议:

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

  2. Metro样式应用程序不应该阻塞线程太长时间。任何需要超过几毫秒的操作都应以异步方式完成。寻找一些在一段时间后执行异步回调的方法,例如定时器。或者您可以等待一段时间(例如Async CTP中的TaskEx.Delay)的结束。


7
现在TaskEx中的所有内容都被移动到了Task中,所以 await Task.Delay(ms) 应该就可以完成任务了。 - Pavel Minaev

7
对于“printf调试”,建议您使用System.Diagnostics命名空间中的Debug.WriteLine和/或Trace.WriteLine方法。它们将输出到调试器输出窗口 - 在VS Express中,您需要先启用它(调试 -> 窗口 -> 输出)。
对于Thread.Sleep,能否说明您认为它需要在哪种特定场景中使用?

1
谢谢,Debug.Write 起作用了。至于 Thread.Sleep,我需要它来快速原型化一个循环,但是上面的答案提出的 Task.Delay 很好地填补了这个空白。 - Timst
伟大的解决方案 - 这是在System.Diagnostics命名空间中WPF中Trace.WriteLine()的等效方法。 - Shawn J. Molloy

6

5

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

对于那些想知道它有什么用处的人,我说我在调试时使用它来测试异步行为。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接