在我的应用程序(Windows 8 Metro)中,我将一些对象以序列化格式存储在本地文件夹中。这是读取然后返回的方法(见下文)。
如果我用 Task.Run 调用这个方法,我可以得到对象:
var entity= Task.Run<Entity>(() => GetASync<Entity>(file)).Result;
但是如果我使用 await 关键字,它就不起作用 - 在方法中的行 A (ReadObject) 上,线程停止并退出,没有错误或异常:
var entity= await GetASync<Entity>(file);
也许我没有像推荐的那样使用 await / async ?
方法
private async Task<T> GetASync<T>(IStorageFile file) where T : class
{
try
{
if (file != null)
{
IRandomAccessStream readStream = await file.OpenAsync(FileAccessMode.Read);
IInputStream inputStream = readStream.GetInputStreamAt(0);
using (XmlDictionaryReader reader = XmlDictionaryReader.CreateBinaryReader(inputStream.AsStream(), XmlDictionaryReaderQuotas.Max))
{
DataContractSerializer serializer = new DataContractSerializer(typeof(T));
var entity = serializer.ReadObject(reader); //line A - here the problem
return entity as T;
}
}
else
{
return null;
}
}
catch (FileNotFoundException)
{
return null;
}
catch (Exception)
{
throw;
}
}