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

Tim*_*mst 19 .net c# microsoft-metro windows-8

出于好奇,我开始在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),这有点不方便,因为这正是我现在所需要的.

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

dtb*_*dtb 17

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

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

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

  • `TaskEx`中的所有内容现在都被移动到`Task`,所以`await Task.Delay(ms)`应该可以做到. (7认同)

Pav*_*aev 7

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

对于Thread.Sleep,你可以澄清你相信是需要它的具体情况?


Rob*_* P. 6

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

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


小智 5

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

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