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

C# Metro风格应用程序中缺少.NET功能?,c#,.net,windows-8,microsoft-metro,C#,.net,Windows 8,Microsoft Metro,出于好奇,我开始在VisualStudio2011中编写一个小型的“Metro风格”项目,该项目在Windows开发者预览版中发布。它将XAML用于设计,而C#(在我的项目中)用于代码隐藏 C#体验与您在Visual Studio 2008和.NET framework 4.0上获得的体验基本相同,只是我没有找到以下功能: System.Console,这使得调试有点困难 还有System.Threading.Thread.Sleep(TimeSpan),这有点不方便,因为这正是我现在需要的

出于好奇,我开始在VisualStudio2011中编写一个小型的“Metro风格”项目,该项目在Windows开发者预览版中发布。它将XAML用于设计,而C#(在我的项目中)用于代码隐藏

C#体验与您在Visual Studio 2008和.NET framework 4.0上获得的体验基本相同,只是我没有找到以下功能:

  • System.Console,这使得调试有点困难
  • 还有System.Threading.Thread.Sleep(TimeSpan),这有点不方便,因为这正是我现在需要的
那么,这些功能是否真的丢失/禁用了,或者我只是找错了地方?提前感谢。

对于“printf调试”,我建议您使用
Debug.WriteLine
和/或
Trace.WriteLine
命名空间中的
System.Diagnostics
方法。它们打印到调试器输出窗口-在开发人员预览中提供的VS Express中,您需要首先启用该窗口(调试->窗口->输出)


对于
Thread.Sleep
,您能否澄清您认为需要的具体场景

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

  • Console可能不可用,因为Metro风格的应用程序中没有控制台。检查是否可用。它直接写入VisualStudio中的调试窗口

  • Metro风格的应用程序不应该在较长的时间内阻塞线程。超过几毫秒的所有操作都应该以异步方式完成。看 用于在一段时间后执行异步回调的某些方法,例如计时器。或者您可以
    等待
    时间跨度的结束(如异步CTP中的TaskEx.Delay)


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

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


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

    TaskEx
    中的所有内容现在都被移动到
    Task
    中,因此
    等待Task。延迟(ms)
    应该可以做到。谢谢,调试。编写工作正常。至于Thread.Sleep,我需要它来快速原型化一个循环,但是上面的答案提出的Task.Delay很好地填补了这个空白。很好的解决方案-这相当于System.Diagnostics命名空间中WPF中的Trace.WriteLine()。