メインスレッドとワーカースレッドで動的にライブラリ(COM DLLを内部的に呼び出す)の読み込みの違いを教えてください。アプリケーション開発言語のサポートのために、事前ほとんどメインスレッドとワーカースレッドでダイナミックライブラリ(内部でCOM DLLを呼び出している)をロードすることの違いは何ですか?
答えて
で
おかげで、COMを使用するには、メインスレッド上の特別のための必要はほとんどありません。
たとえば、プロジェクト作成ウィザードでOLE/COMオプションをチェックします。
ただし、複数のワーカースレッドを使用し、ワーカースレッドでCOMを使用する場合、次の操作が必要です。
COMを使用するワーカースレッドは、COMオブジェクトを作成または使用する前に、スレッドの先頭でOLEを初期化する必要があります。
Win32 APIの場合、CoInitialize()/CoInitializeEx()です。
また、アプリケーションの開発言語によっては、同等の関数とライブラリが存在するので、それを呼び出してください。
COMを使用するワーカースレッドは、UIを担当するメインスレッドによって実行されるWindowsメッセージ処理ループとは独立して、独自のメッセージ処理ループを実行する必要があります。
使用しているCOMコンポーネントに注意してください。
COMコンポーネントが登録されているThreadingModel in the registryの値が空の文字列(何も設定されていない)である場合、イベントがワークスレッドに通知されず、例外が発生することがあります。
このレジストリに値がない場合は、 "Apartment"と記入してください。
COMオブジェクトは、基本的に作成したスレッドからのみ使用してください。
COMオブジェクトがCOMオブジェクトを作成したスレッドではない別のスレッドから呼び出された場合、エラーが発生したり、通常の操作が実行されないことがあります。
その他の注意:
ワーカースレッドを終了するには、上記のクリーンアップを実行する必要があります。
COMオブジェクトを終了および解放し、メッセージ処理ループを停止し、CoUnintialize()などを呼び出します。
ワーカースレッド内で作成または割り当てられたリソースは、終了または解放する必要があります。
- 1. ワーカースレッドがメインスレッド上で何かを呼び出そうとするとデッドロックが発生する
- 2. CLRワーカースレッドとワーカースレッドの違いは何ですか?
- 3. tkinter.mainloop()とwindow.mainloop()の呼び出しの違いは何ですか?
- 4. exampleFunction()とexampleFunction.call()の呼び出しの違いは何ですか?
- 5. * args、** kwargsとtupleとdictでの呼び出しの違いは何ですか?
- 6. 別のCOM DLLへの呼び出しでVB.NET呼び出しCOM DLLがエラーになる
- 7. iOSのダイナミックライブラリとダイナミックフレームワークの違いは何ですか?
- 8. PythonのcProfileでは、呼び出し回数とプリミティブ呼び出し回数の違いは何ですか?
- 9. TextReaderでのRead()とReadBlock()の呼び出しの違いは何ですか?
- 10. .NETはTApplicationと同等か、.NETマネージドコードでこのDLLを呼び出す方法は何ですか?ここで
- 11. DOMをロードした後にng-clickで関数を呼び出すと呼び出す方法との違い
- 12. NotifierManager.notify()をワーカースレッドから呼び出すことはできますか?
- 13. ワーカースレッドとバックグラウンドスレッドアンドロイドの違いは何ですか?
- 14. 3つの方法のいずれかでメソッドを呼び出すことの違いは何ですか?
- 15. C DLLからC#DLLを呼び出すことはできますか?
- 16. 外部ソートと内部ソートの違いは何ですか?
- 17. Windowsプログラムの呼び出しの違いは何ですか?
- 18. 自己呼び出し機能を持つKnockoutJSモデルを宣言することの違いは何ですか?
- 19. 関数を呼び出す際の{}と()の違いは何ですか?
- 20. ライブラリは内部でV7を呼び出している:27.0.1ライブラリ
- 21. Webページのキャッシュとajax呼び出しのキャッシュの違いは何ですか?
- 22. LongへのキャストとlongValueの呼び出しの違いは何ですか?
- 23. 管理DLLとアンマネージDLLの違いは何ですか
- 24. プログラム(DLL)から呼び出すことができるC++コンパイラ
- 25. メインスレッドで[NSRunLoop runMode:beforeDate:]を呼び出すと、メインスレッドで実行されているNSOperationsが待ち受けになる
- 26. 通常の関数呼び出しとsignal()システム呼び出しの違いは何ですか?
- 27. いつでも呼び出すことができるpowershellスクリプトをロードする
- 28. DLLが.NET DLLを呼び出すことはできますか?
- 29. 通常の関数呼び出しとpcallの違いは何ですか
- 30. expressjs app.VERB呼び出しのnext()とnext( 'route')の違いは何ですか?
試しましたか?あなたは何か違いを見たことがありますか?何が問題なの? – Backs
ワーカースレッドでCOM Dllを登録できない – VinuthSG
LoadNativeDll.exeで0x77125608(KernelBase.dll)の最初の例外が発生しました:0x8001010E:アプリケーションが異なるスレッド用にマーシャリングされたインターフェイスを呼び出しました。 – VinuthSG