0

Windows8メトロアプリを作成しようとしています。フィードを取得する小さなRSSリーダー。

そのため、フィードを非同期にしようとしています。

Windows.Web.AtomPub.AtomPubClient client = new Windows.Web.AtomPub.AtomPubClient();
client.RetrieveFeedAsync(new Uri("http://MyURI/index.rss")).Completed += completed;

コールバック関数は次のとおりです。

private void completed(IAsyncOperationWithProgress<Windows.Web.Syndication.SyndicationFeed, Windows.Web.Syndication.RetrievalProgress> asyncInfo, AsyncStatus asyncStatus);

Ok。今私の問題。

コールバック関数内のオブジェクトにアクセスしようとしている限り、すべてが正常に機能しています。しかし、(コールバック関数が配置されている)クラスのオブジェクトにアクセスしようとすると、COMExceptionが発生します。this.MyCollection.Add(...)のようなものを試してみます。クラス内のコレクションに追加するfeedItemを作成しています。

An exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll but was not handled in user code

Additional information: Eine Schnittstelle, die für einen anderen Thread marshalled war, wurde von der Anwendung aufgerufen. (Ausnahme von HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))

If there is a handler for this exception, the program may be safely continued.

奇妙なことに、このアクセスは私のアプリを2回実行するごとに機能しています。

ここで何がうまくいかないのかわかりません。

誰かが私にヒントをくれましたか?

どうもありがとう!

4

1 に答える 1

0

Ok。解決策はBlockingCollectionです。スレッドセーフです。

于 2012-09-21T11:33:52.830 に答える