问题标签 [winrt-async]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1282 浏览

javascript - 从 Windows 运行时组件调用可移植代码库中的异步方法

背景

我正在构建一个可在 Windows 8(作为商店应用程序)和 Windows 7(作为 WPF 桌面应用程序)上使用的应用程序。这些应用程序将允许浏览一堆(大约 500 多个应用程序“页面”)的内容。

虽然我不能在他们之间共享很多代码,但我确实希望尽可能多地共享。因此,我创建了一个针对 .NET 4.5、Silverlight 4+ 和 Windows 8 的便携式代码库 (PCL)。由于 Win 8 应用程序是用 JavaScript 编写的(出于各种原因,不是这个问题的一部分),我也有一个 Windows运行时组件,充当 JavaScript 和 PCL 之间的代理。换句话说,来自 JavaScript 的异步调用首先调用 WinRT 组件上的方法,然后调用 PCL 中的相应方法。

问题

为了支持 PCL 中的异步操作,我通过 NuGet 安装了 Microsoft.Bcl 和 Microsoft.Bcl.Async 包。这些,除其他外,定义了异步方法所需的 Task 和 Task<> 类,但它们在自己的程序集中这样做。WinRT 组件不需要这些库,因为已经为它定义了 Task 和 Task<>。问题是当我在 WinRT 组件中添加代码以调用返回 Task<> 对象的 PCL 中的 Async 方法时,我收到以下构建错误:

WINMDEXP:错误 WME1007:无法解析引用“程序集(名称=System.Threading.Tasks,版本=1.5.11.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a)”。

我试过的

我已经尝试了很多东西,但可能出现的主要两个是:

  1. 修改 WinRT 组件的 app.Config 以为程序集添加 bindingRedirect。
  2. 通过从内部执行的异步调用中取回 Task 对象并在其上调用 Wait(),使 PCL 调用在外部非异步。等待永远不会返回抛出一个神秘的异常。

那么,关于如何实现这一点的任何想法?

谢谢,
戴夫帕克

0 投票
3 回答
168 浏览

windows-8 - 关于 Windows 8 应用程序的隐私政策

我没有任何个人网站或网址可在我的应用程序中指定隐私政策。有什么替代品让我指定相同的吗?

0 投票
2 回答
2613 浏览

windows-8 - 如何知道 Windows 8 设备(笔记本电脑/平板电脑/台式机)是否支持 GPS

我正在 xaml 中开发一个 Windows 8 Store 应用程序,它使用用户的 GPS 位置。如果设备用户使用的设备具有 GPS 功能,我是否可以通过编程方式知道?

与 Windows 手机不同,它仅在有互联网连接时才有效?

0 投票
2 回答
774 浏览

windows-8 - MonoGame Windows 8 的屏幕截图问题

我很难在 MonoGame 中保存屏幕截图。每次我保存屏幕截图时,它都会变得一团糟,就像您不订阅付费频道时的样子。就像搞乱 VHS 磁带上的跟踪一样。我现在知道发生了什么。我创建了一个全新的项目,只是为了看看它是我的项目还是 MonoGame。它与新项目完美配合。我知道没有人能知道我到底做错了什么,但谁能告诉我为什么会发生这样的事情?我应该看看我的相机课吗?或者,关于文件保存的某些事情可能会变得一团糟?我很茫然,今天我有一个游戏归功于微软,我显然已经错过了那个截止日期。以下是我的保存截图方法:

0 投票
0 回答
133 浏览

c++ - 使用 WinRT 的 WifiDiscovery

我需要为我的应用程序找到我的 IP 摄像机。早些时候在 Windows 7 上,我使用 Bonjour API 来查找 IP 摄像机。但是 windows 8 WinRT 似乎不支持 Bonjour。我们在 WinRT 中有什么可以做同样的事情吗?

0 投票
1 回答
3403 浏览

c# - GetFilesAsync 停止工作

我有这段代码

并从我的 Windows 8 Store 应用程序中调用它;

因此,如果我在上面的行上放置一个断点并逐步运行它,它可以工作,但是没有中断并且只是运行应用程序会导致应用程序挂起。

几天前的提交也有类似的代码;

有任何想法吗?

0 投票
2 回答
498 浏览

windows-8 - 如何保证 IXMLHTTPRequest2 回调将在不同的线程上调用?

我正在使用 IXMLHTTPRequest2/IXMLHTTPRequest2Callback 接口发送 HTTP 请求并处理响应。有时响应回调(OnHeadersAvailable() 等)在与发送请求的线程不同的线程上调用,有时回调在发送请求的同一线程上调用,如下面的调用堆栈所示:

我希望回调总是在不同的线程上调用,因为这被记录为异步接口。有没有一种方法可以保证始终在与发送请求的线程不同的线程上调用回调?感谢您提供任何信息。

0 投票
2 回答
391 浏览

unit-testing - 模拟 Windows Store 单元测试项目的 DataReader

我正在尝试对使用IDataReader.LoadAsync方法的 Windows Store 类库项目进行单元测试。我能够创建自己的存根,它实现了我需要的 IDataReader 的所有部分,除了 LoadAsync 方法的返回类型 - DataReaderLoadOperation。这是一个没有公共构造函数的密封类,所以我不知道从我的存根的 LoadAsync 方法返回什么。

我正在测试的代码除了它之外没有使用 LoadAsync 的结果await,所以我尝试从我的存根返回 null。但是,这会引发 AggregateException,因为框架会尝试将 null DataReaderLoadOperation(它是一个 IAsyncOperation<uint>)转换为 Task 并触发 NullReferenceException。

似乎 Microsoft Fakes 也不适用于 Store 单元测试项目,仅适用于常规单元测试项目,所以这也无济于事。

如何模拟 Windows Store 单元测试项目的 DataReader.LoadAsync?


编辑:根据斯蒂芬的回答,我改为嘲笑 IInputStream 。下面是我的模拟供参考。

0 投票
3 回答
6776 浏览

c# - 如何在 WinRT 中获取文件大小?

在 WinRT 中没有FileInfo类,只有一个StorageFile类。

如何使用StorageFile类获取文件的大小?

0 投票
2 回答
1142 浏览

c# - C# Windows Store App - 使用 async/await 的文件 IO 导致超时和 InvalidOperationException

这是我在该网站上的第一篇文章,我进行了广泛搜索以使我的代码正常工作。正如标题所说,它是一个 WinRT 应用程序,我在使用文件 IO 时遇到了困难。我想要做的是读取存储在应用程序安装目录内的文件夹中的文本文件,其中包含我将提供给 List<> 的数据行。

问题是我在尝试运行它时遇到文件未找到错误。任何人都可以帮忙吗?如果您需要我发布更多信息,我可以...提前致谢。