我目前正在学习如何在 Windows 应用商店(“Metro”)应用程序中使用任务、异步和等待。我偶然发现了这处房产Task.CurrentId
,并试图了解它是如何运作的。
根据MSDN,它返回“系统分配给当前执行任务的整数”。所以我将此值添加到我的自定义记录器中,但令我惊讶的是,我的测试应用程序都没有记录任何内容,除了null
.
看这个例子:
private async void TestButton_Click(object sender, RoutedEventArgs e)
{
int? id1 = Task.CurrentId;
await Task.Delay(100);
int? id2 = Task.CurrentId;
StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFile file = await folder.CreateFileAsync("test.txt",
CreationCollisionOption.OpenIfExists);
int? id3 = Task.CurrentId;
await FileIO.AppendTextAsync(file, "test");
int? id4 = Task.CurrentId;
await DoMoreAsync();
int? id7 = Task.CurrentId;
}
private async Task DoMoreAsync()
{
StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFile file = await folder.CreateFileAsync("test.txt",
CreationCollisionOption.OpenIfExists);
int? id5 = Task.CurrentId;
await FileIO.AppendTextAsync(file, "test");
int? id6 = Task.CurrentId;
}
所有这些 id 都是null
. 为什么?这段代码确实创建了任务,不是吗?他们不应该有身份证吗?