問題タブ [iasyncoperation]

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 投票する
1 に答える
1089 参照

windows-runtime - WinRT C++/CX タスクがコンパイルされない

C++/CX を使用して WinRT コンポーネントを作成しようとしています。次のコードがありますが、コンパイルできません。それの何が問題なのですか?私が理解していることから、PPL タスクは、結果を伴うタスクである場合、透過的に IAsyncOperation に変換する必要があります。

エラーメッセージ

0 投票する
1 に答える
1960 参照

c# - Windows.Storage.Streams.IInputStreamをIInputStreamインターフェイスでラップするにはどうすればよいですか?

次のように、別のIInputStreamに委任し、読み取ったデータを処理してからユーザーに返すIInputStreamを実装したいと思います。

私はインターネットの広大さを検索することによって答えることができなかった2つの異なる問題を抱えています:

  • 委任されたReadAsync()の後に実行する別の操作をチェーンする最良の方法は何ですか(「await」を使用し、AsyncInfoを使用して新しいIAsyncOperationを作成することもできますが、progress reporterなどを接続する方法がわかりません)
  • 「IBuffer」の背後にあるデータにアクセスするにはどうすればよいですか?
0 投票する
2 に答える
1371 参照

multithreading - WinJS からのマルチスレッド WinRT コンポーネントの使用

C++/CX で記述された WinRT コンポーネントを使用する WinJS アプリがあります。コンポーネントは、同じスレッドからすべての呼び出しを行う必要がある、巨大なレガシー スレッドセーフでない C++ ライブラリでの作業をカプセル化するバックグラウンド スレッドを生成します。

コンポーネントのバックグラウンド スレッドがプロデューサーであり、JavaScript アプリの UI スレッドがコンシューマーであるプロデューサー/コンシューマー パターンを実装する必要があります。

JavaScript はコンポーネント メソッドを (UI スレッドで) 呼び出すことができ、C++ コードはジョブをバックグラウンド スレッドのキューにポストするため、呼び出し部分は簡単です。

問題はコールバックです。C++ バックグラウンド スレッドによって計算されたデータを UI スレッドにポストする必要があります。確かに IAsyncOperation を JavaScript に戻すことはできますが、この操作がバックグラウンド スレッドからのイベントを待機している間、UI スレッドがブロックされることは望ましくありません。

私のオプションは何ですか?

0 投票する
1 に答える
225 参照

c# - Web ページとビジネス層の間でマルチスレッドを同期させる

このコードのチャンクを機能させるのに問題があります (長くなってすみません)。コードは無菌化され、問題の診断に関連する部分のみが表示されます。

コンソール アプリから実行すると正常に動作します。しかし、ASP.NET アプリから Utlities.SendBulkEmail が呼び出されると、BulkEmailCompleted ルーチンは起動されず、m_CompletedWorkers カウンターをインクリメントするのはこのルーチンです。

SendBulkEmail ルーチンをリファクタリングして、BackgroundWorker の代わりに AsyncOperationManager を使用する方法を教えてください。結果が返されるスレッドを保証できます。

SendBulkEmail ルーチン自体はマルチスレッドではありません。マルチスレッドは foreach ループ内で発生します。

元のコードの基礎は次の Web サイトから取得したと思います: http://www.dotnetfunda.com/articles/article613-background-processes-in-asp-net-web-applications.aspx

Utilities プロジェクトはさまざまなソリューション間で共有されており、ほとんど独立しています。

私はこれを明確にすることを望んでいます。

どんな助けでも大歓迎です。

コードは次のとおりです。

Web サイト プロジェクト内 (Control.ascx.cs)

ビジネスオブジェクトプロジェクトで

ユーティリティ プロジェクトで

0 投票する
1 に答える
215 参照

f# - F# での IAsyncOperation の待機

F# に次のコードがあります。

私が抱えている問題は、それfileが予想通りIAsyncOperation<StorageFile>であり、そうではないということです。StorageFileReadTextAsync

C# では、次のようなことができます。

すなわち

IAsyncOperation問題は、F# でawait を行う方法がわからないことです。いつもlet!は通用しない。つまり、以下はコンパイルに失敗します:

コンパイラエラーで:

次のように使用できるクラスでAsTask()定義された拡張メソッドがあると述べたドキュメントを見つけました。System.WindowsRuntimeSystemExtensions

これを行う標準的な方法や、これを少し良くする F# ライブラリのどこかで利用できるものはありますか?

0 投票する
1 に答える
733 参照

c++ - WinRT c++ の BitmapImage SetSourceAsync

WinRT c++ は初めてです。C# から StorageFile 画像を渡してファイルを開き、それを WinRT の BitmapImage のソースとして設定して、画像の高さと幅を抽出しようとしています。次のコードを使用しています。

このコードは機能していないようです。行 BitmapImage^ bmp = ref new BitmapImage(); の後 デバッガーは、ソース コードが見つからないと言って停止します。正しいコードを書くのを手伝ってもらえますか?

0 投票する
1 に答える
265 参照

c# - IAsyncOperationキャストしない

私はこのクラスCustomFileStreamを持っています。以下はその署名です

でも、こうやって使うと、

コンパイルエラーが発生し、

私がここで何か間違ったことをしているかどうかを誰かに見てもらえますか。

ありがとう。

0 投票する
0 に答える
231 参照

c++ - C++ Async DragDrop が正しく機能しない

現在、システムには Silverlight UI (この段階では変更できません) がありますが、ドラッグ ドロップ機能は非常に限られています。現在、信頼を高めたブラウザが不足しています。そこで、Silverlight の欠点を処理するために、ドラッグ ドロップ イベントを処理するために C++ com ライブラリを作成しました。これは、他のアプリケーションからの受信イベントに対しては完全に機能しますが、アプリをソースとしてドラッグ操作を正しく機能させるのに苦労しています。アプリからドラッグされるファイルのほとんどは仮想ファイルになりますが、これはなんとか機能しましたが、試行したすべての操作に関係なく、操作を非同期にすることができず、プロセス中にアプリがロックされました。

最初に実装したのは IAsyncOperation (xp との下位互換性が必要) だけで、明らかな影響はありませんでした。私の DataObject はインターフェースに対して照会され、ref を取得します。VARIANT_TRUE を返す GetAsyncMode への呼び出しが行われ、StartOperation への呼び出しが行われます。ただし、すべての操作は同じスレッド (ui スレッド) で行われ、非同期は影響を受けていないようです。

その後、AsyncIDataObject を返すように ICallFactory を実装しようとしました。ここで、エクスプローラーは ICallFactory インターフェイスをチェックしているようで、呼び出しオブジェクトで CreateCall を呼び出し、クエリを実行して、正しいインターフェイスがあることを確認します。シンボル サーバーを使用すると、これが AsyncStubInvoke コール スタックで発生することがわかります。ここから、ICallFactory インターフェイスを検索する StdStubBuffer_QueryInterface への呼び出しが行われます。このチェックは失敗し、残念ながら、このインターフェイスでどのオブジェクトがチェックされているかを確認できません。これが失敗した後、操作がサポートされていないエラー (インターフェイスがサポートされていないエラーに続く) の後、呼び出しは SyncStubInvoke にフォールバックするようです。これもすべて最終結果に影響を与えないようで、呼び出しはソース アプリのロックと同期しているようです。

com 呼び出しを公開する私の DragDrop クラスは CComMultiThreadModel です。CComObjectRootExから継承しない基本クラスとしてDataObjectを使用しようとしました.IDLでも定義され、CComMultiThreadModelと同様にCComObjectRootExから継承するラッパーIDataObjectクラスを使用してみました。また、このクラスが IDispatch と IUnknown から継承されるようにしました。

どんなフィードバックでも大歓迎です。