我遇到了同样的问题。不幸的是,在 MSFT 发布的关于共享合约目标的所有示例、教程和示例代码中,没有一个人真正读取共享文件。
我没有声称具体了解幕后发生的事情,但它涉及共享目标(您的应用程序)的 UI 线程和共享源的 UI 线程在 OpenReadAsync 期间同时位于调用堆栈上电话,这就是导致怪胎的原因。
解决方案是将您的 OpenReadAsync 调用移出 UI 线程。很抱歉不知道 JS 执行此操作的方式,但我在 C# 中修复此问题的方法是:
// BAD - This produces: "A COM call to an ASTA was blocked because the call
// chain originated in or passed through another ASTA. This call pattern
// is deadlock-prone and disallowed by apartment call control."
//
// IRandomAccessStreamWithContentType stream = await fileReceived.OpenReadAsync();
// GOOD - This moves the OpenReadAsync off of the UI thread and works fine...
//
IRandomAccessStreamWithContentType stream = await Task.Run(async () =>
{
return await fileReceived.OpenReadAsync();
});