2011-09-16 67 views
19

主要是出於好奇,我開始在Visual Studio 2011中編寫一個小型的「Metro Style」項目,這個項目是在Windows Developer Preview中發佈的。它將XAML用於設計和C#(在我的項目中)用於代碼隱藏。Metro風格應用程序中缺少.NET功能?

C#的經驗幾乎等於你上的Visual Studio 2008和.NET Framework 4.0中的一個,保存這些功能,我是不是能找到:

  • System.Console,這使得調試更加困難,因爲這正是我現在需要的,所以它更加不方便,因爲它更加不方便。

那麼,這些功能實際上是缺失/禁用,還是我只是看錯了地方?提前致謝。

回答

17

我沒有安裝預覽,所以我無法檢查。但這裏有兩個想法:

  1. System.Console可能不可用,因爲Metro風格的應用程序中沒有控制檯。檢查是否可用Debug.WriteLine。它直接寫入Visual Studio中的調試窗口。

  2. Metro風格的應用程序不應該阻塞線程延長的持續時間。所有需要超過幾毫秒的應該以異步方式完成。查看 以便某種方式在一段時間後執行異步回調,例如計時器。或者你也許可以在一段時間內完成(比如Async CTP中的TaskEx.Delay)。

+7

'TaskEx'中的所有東西現在都移到'Task'正確的位置,所以'await Task.Delay(ms)'應該做到這一點。 –

7

對於「printf調試」,我建議您使用來自System.Diagnostics名稱空間的Debug.WriteLine和/或Trace.WriteLine方法。它們打印到調試器輸出窗口 - 在Developer Preview中的VS Express中,您需要首先啓用它(調試 - > Windows - >輸出)。

對於Thread.Sleep,您能否澄清您認爲需要的具體情況?

+1

謝謝,Debug.Write工作。至於Thread.Sleep,我需要它來快速建立一個循環的原型,但上面的答案提出的Task.Delay很好地填補了這個空白。 – Timst

+0

偉大的解決方案 - 這與System.Diagnostics名稱空間中WPF中的Trace.WriteLine()等效。 – nocarrier

5

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

對於那些想知道什麼是有用的,我說我用它在調試強調異步行爲。

相關問題