2013-07-22 3 views
1

Я пытаюсь реализовать контракт с целевой целевой подпиской в ​​win 8.1. Пример кода целевой доли приложение работает, но когда я пытаюсь прочитать файл storageItem используя следующий код:Поделитесь целевой ошибкой при попытке прочитать файл storageItem в win 8.1

storageItems.getAt(i).openReadAsync().then(function(stream) { 

}); 

Я получаю сообщение об ошибке:

0x8000001f - JavaScript runtime error: 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.

Это еще один WinJs/Win8.1 просмотра ошибке или Я делаю что-то неправильно?

+0

Здесь же! Не знаю, в чем проблема. Пожалуйста, поделитесь, если вы нашли что-нибудь. –

+0

Пока не найдено решения;/ –

ответ

8

Я столкнулся с этой проблемой. К сожалению, во всех примерах и учебных пособиях и образцовом коде, который MSFT выпустил по целям долевого контракта, ни один из них на самом деле читает общий файл.

Я не утверждаю, что понимаю, что происходит под обложками, но включает в себя как поток пользовательского интерфейса целевой цели (ваше приложение), так и поток пользовательского интерфейса источника общего доступа, находящегося в стеке вызовов, время во время вызова OpenReadAsync, что и вызывает freakout.

Решение заключается в перемещении вашего вызова OpenReadAsync из потока пользовательского интерфейса. Извините за то, что я не знаю, как это сделать 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(); 
}); 
+0

не так легко в javascript, к сожалению :) Спасибо в любом случае –

 Смежные вопросы

  • Нет связанных вопросов^_^