2017-10-10 6 views
2

私はJavaプログラマです。プロジェクトでは、私はdropWizardのようなフレームワークを持っているjavaでC#ウィンドウフォームアプリケーションプログラミング を起動する必要があります。これらのフレームワークは個別にスレッディングを管理します またはイベントバスがあり、それを使ってpub/subとproducer/consumerを実装するのが最も簡単です。また、配信保証と自動スレッド管理があります(必要に応じてメッセージごとに新しいスレッドを作成します)配信保証と自動スレッドの発行者/サブスクライバC#

Frame Captured By Camera, do IO, do another IO -> First DoSome Image Processing -> Show on Form Picture Box -> Second Image Processing -> Match Similar Frames And Save in Data Structure 

各画像処理は、多くの計算のを持っており、各フレームは独自の流れ フレームを同時に処理することができており、各処理ユニットは、私がイベントベースのプログラミングを使用することにしました 個別に作業することができます: 私はこの問題を解決する必要がありますc# イメージが最初のイメージ処理モジュールによって登録されたこのイベントによって関数によって発生したイベントをキャプチャした後で、Fir ST画像処理モジュールは、第2の画像処理ユニット にデータを渡すためにフォーム上の画像を表示し、別のイベントを上昇し、その作業の立ち上がりイベントをやっしかし、私は切り抜いた問題を持っている:

  1. 私が撮影した画像が原因の遅れで表示されます知っていますまず、画像処理ユニットの計算時間が、私はいくつかのフレームを逃したが、私はこれらの問題を解決する最善の策は何か、なぜ

を何らしていない私は、画像

  • を示すラグの多くを参照してください。 各カメラフレームは、私が名前MyEventでイベントを持っていると私は0とincreament上昇イベント で始まる静的int型のIDを持っており、イベントハンドラで、このイベント とプリントIDを処理するために4関数を登録するだけでビットマップイメージ です一部のハンドラでいくつかのIDがランダムに欠けています

  • +0

    を使用することができますが同期しています。 UIスレッドをブロックしないためには、TPLを使用する必要があります。 2番目の点については、あなたのコンテキストでどのフレームが意味するのか分かりません。いくつかのコードを表示します。 – Alex

    +0

    @Alex各カメラフレームは単なるビットマップ画像です – user298582

    答えて

    0

    イベント駆動非ブロッキングアプリケーションの場合はRx.Netを使用できます。

    C#でasyncawaitの言語構成を使用することも考えられます。

    あなたが俳優ベースのプログラミングを行いたい場合は、C#のイベントではAkka.NET

    +0

    'TPL Dataflow'も' Akka.Net'の代わりにオプションです。 – VMAtm