【问题标题】:DataContractSerializer in WinRTWinRT 中的 DataContractSerializer
【发布时间】:2011-12-27 02:13:49
【问题描述】:

我正在练习 WinRT API,但遇到一些问题需要您的帮助。

我想试试DataContractSerializer 并参考这个网站:

http://winrtstoragehelper.codeplex.com/

代码:

Stream inStream = Task.Run(() => readStream.OpenRead()).Result;

我认为应该是(错误?):

Stream inStream = await Task.Run(() => readStream.OpenRead());

但最奇怪的是,如果我只使用:

Stream inStream = readStream.OpenRead());

然后我将这个流传递到:

DataContractSerializer.WriteObject

API 将永远卡住。

但如果我使用:

Stream inStream = await Task.Run(() => readStream.OpenRead());

然后将此流传递给WriteObject,然后它就可以正常工作了。

我不知道为什么只有在我不使用Task.Runawait 作为流时才会出现这种症状。

谁能给我一些建议或建议?


但是

Stream inStream = readStream.OpenRead() 方法未命名为“异步”

我不知道为什么我需要故意创建任务来执行此操作。

谢谢。

【问题讨论】:

    标签: c# windows-runtime c#-5.0


    【解决方案1】:

    答案在项目描述中:

    "ObjectStorageHelper 是一个 Generic 类,用于简化存储 WinRT 应用程序中的数据,同时仍然保持异步 *原则* Metro 风格的应用程序。”

    WinRT 中的所有文件/IO 操作本质上都是异步的,因此需要使用也是异步的方法(至少为了获得任何结果)。新的“await”关键字是实现此目的的一种方法,尽管您也可以显式分配一个回调函数来处理异步操作的完成。

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 2011-12-05
      相关资源
      最近更新 更多