19

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

C# 体验与您在带有 .NET 框架 4.0 的 Visual Studio 2008 上获得的体验基本相同,除了这些我无法找到的功能:

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

那么这些功能实际上是否缺失/禁用,或者我只是看错了地方?提前致谢。

4

4 回答 4

17

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

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

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

于 2011-09-16T21:34:40.067 回答
7

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

对于Thread.Sleep,您能否阐明您认为需要它的具体场景?

于 2011-09-16T21:32:08.630 回答
6

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

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

于 2011-09-16T21:34:40.253 回答
5

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

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

于 2012-08-11T14:19:00.450 回答