【发布时间】:2012-11-02 07:17:00
【问题描述】:
private async void Clicked(object sender, RoutedEventArgs e)
{
StorageFolder s;
s = KnownFolders.DocumentsLibrary;
IReadOnlyList<StorageFile> l = await s.GetFilesAsync();
bool exists=false;
foreach (StorageFile sf in l)
{
if (string.Equals(sf.Name, "encrypted.txt", StringComparison.CurrentCultureIgnoreCase))
exists = true;
}
MessageDialog d = new MessageDialog(exists.ToString());
await d.ShowAsync();
}
调试代码时,我无法单步执行foreach 循环中的代码
虽然在循环结束时存在的值是正确的,如果我将MessageDialog 代码放入循环中,我可以看到循环执行,知道如何正确地进入循环吗?
即使我将 MessageDialog 代码放入循环中,我也无法进入 if 条件,所以我怀疑问题出在某个地方
编辑:在 if 条件上设置断点有效(目前我将其放在函数的第一行),但我不应该能够正常使用F11 如果我要逐行调试? (至少在 TurboC 中是这样工作的)
EDIT2:我能想到的最简单的方法来清楚地显示问题:http://www.youtube.com/watch?v=10GgXCqLlVo&feature=youtu.be(跳到 25 秒标记以查看实际问题)
【问题讨论】:
-
您在调试版本中吗?发布版本?
-
@MarcGravell 它是一个调试版本,还添加了更多细节
-
F11 步进入一个成员通常 - F10 是步超过当前语句。
-
如果你只是把断点放在 foreach 里面呢?会被击中吗?
-
@JonSkeet 是的,所以 F11 应该进入 for 循环,然后进入 if 条件,对吗?还是我误解了 over 和 into 的含义?