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

时间:2011-09-16 21:25:03

标签: c# .net windows-8 microsoft-metro

出于好奇,我开始在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 个答案:

答案 0 :(得分:17)

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

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

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

答案 1 :(得分:7)

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

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

答案 2 :(得分:6)

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

我的理解是它只是一个子集;缺少的大部分内容与同步操作有关(因此我对Thread.Sleep()的消失并不感到惊讶)。你也会发现'File.Create'这样的东西不能同步调用。

答案 3 :(得分:5)

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

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