Metro风格应用程序中缺少.NETfunction?

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

C#体验与使用.NET Framework 4.0的Visual Studio 2008上的体验大致相同,除了我无法找到的这些function:

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

这些function实际上是丢失/禁用的,还是我只是看错了地方? 提前致谢。

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

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

  2. Metro风格应用程序不应该在延长的持续时间内阻止线程。 所有花费超过几毫秒的事情都应该以异步方式完成。 寻找某种方式在一段时间后执行异步回调,例如计时器。 或者您可以await时间跨度的结束(如Async CTP中的TaskEx.Delay)。

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

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

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

我的理解是它只是一个子集; 缺少的大部分内容与同步操作有关(因此我对Thread.Sleep()的消失并不感到惊讶)。 您还会发现无法同步调用“File.Create”之类的内容。

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

对于那些想知道它有用的人,我说我在调试中使用它来强调异步行为。