問題タブ [winrt-component]
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.
c# - WinRT アプリケーションとディレクトリのループ
私は最初のWinRTアプリに取り組んでいますが、ディレクトリをループしてそのディレクトリにあるファイル名を取得できるコードを見つけることができないようです。
通常のwinform、wpf、およびコンソールでそれを行うためのコードがたくさん見つかりましたが、Winrtの種類には実際には何もありません。
私がコードに最も近いもの:
しかし、それは自分のプロジェクト内にあるファイルを取得しているように見えますか?
「c:\something\something」のような通常のディレクトリをスキャンするにはどうすればよいですか?
c# - Windows ランタイム コンポーネントから UI スレッドにアクセスすると、モバイルでのみ例外がスローされる
次の問題があります。簡単な Windows ランタイム コンポーネントを使用して、アプリケーションとWebView
. 私はドキュメントに従ってこれをやっています
これは、Windows ランタイム コンポーネントのコードです。
OnNavigatedTo
メソッドでは、を初期化WebViewInjectionObject
し、イベントをサブスクライブしOnNotifyApp
ます。
その後、私が呼び出すのNavigationStarting
イベントでWebView
AddWebAllowedObject
WebView
次に WebView と対話するメソッドのコードはWebViewInjectionObject_OnNotifyApp
次のようになります。
これをデスクトップ (バージョン 1709、ビルド 16299.371) で実行すると、すべて正常に動作します。
これを携帯電話 (バージョン 1709 およびバージョン 1607) で実行すると、この例外が発生します。
アプリケーションは、別のスレッド用にマーシャリングされたインターフェースを呼び出しました。(HRESULT からの例外: 0x8001010E (RPC_E_WRONG_THREAD))
通常、このような問題は、dspatcher を使用して UI スレッドから呼び出しを行うことで解決されます。私はfollowigをやってみました
しかし、これはより深い例外につながります
呼び出しチェーンが別の ASTA で開始されたか、別の ASTA を通過したため、ASTA への COM 呼び出しがブロックされました。この呼び出しパターンはデッドロックが発生しやすく、アパートメント呼び出し制御では許可されていません。ASTA (スレッド 3036) への COM 呼び出し (IID: {638BB2DB-451D-4661-B099-414F34FFB9F1}、メソッド インデックス: 6) は、呼び出しチェーンが別の ASTA (スレッド 5964) で開始または通過したため、ブロックされました。この呼び出しパターンはデッドロックが発生しやすく、アパートメント呼び出し制御では許可されていません。
その後、 を使用することを考えたので、SynchronizationContext
これにしました。のOnNavigatedTo
そして、WebViewInjectionObject_OnNotifyApp
これは再び最初の例外につながります。
私は次に何をすべきか途方に暮れています。目標は、Windows ランタイム コンポーネントからスローされたイベントをキャッチし、デスクトップとモバイルの両方で機能する方法で をInvokeScriptAsync
呼び出すことです。WebView