0

C dllを呼び出すc# ui があります。UI がワークスペースを開きます。ユーザーがワークスペースで他の作業をしている間に、DLL がバックグラウンドで大きなファイルをロードするようにしたいと思います。現在、UI は pinvoke を使用して DLL と通信しています。(これは C dll 関数の 1 つです。)loadFile

ある時点で、ユーザーはワークスペースでファイルを完全にロードする必要があることを行うため、ファイルのロードが完了したかどうかを何らかの方法で DLL に問い合わせる必要があります。私はc#C コードのソースを持っているので、どちらの側でも変更できます。

c#の初心者であり、アマチュア C コーダーにすぎないので、を使用して目的を達成できc# backgroundWorkerますか?

または、何らかの形式のスレッドを使用していますか?

それとも、C dll は読み込みが完了するまですべてをブロックしますか?

4

1 に答える 1

0

バックグラウンド ワーカー コンポーネントから C 関数を呼び出すことができます。さらに、バックグラウンド ワーカーの完了イベントが発生していることを確認する必要があります。これは、バックグラウンド ワーカーのプロパティを使用して設定できます。

このようにして、バックグラウンド ワーカーがジョブを終了すると、作業が完了し、ユーザー インターフェイスが画像を適切に処理できることをユーザー インターフェイスに通知します。

ここでは、C コードがブロッキングであることを確認する必要があります。つまり、関数が作業を完了した後にのみバックグラウンド ワーカー イベントが発生するように、マルチスレッド化されていないことを確認する必要があります。

于 2012-09-16T04:50:58.983 に答える