0

Ingeardrivers.com の .dll を使用しています。この質問はそのサイトでより適切に尋ねられ、そこにも投稿されていると思いますが、ここにいる人が多いほど、回答が得られる可能性が高くなります.

私は初心者のプログラマーで、これがスレッド化の最初の経験です。基本的に、プログラムには 2 つのメイン ループがあり、各ループを単独で「メイン スレッド」として実行すると、どちらも個別に正常に動作します。問題は、2 つのスレッドを開始し、これらのスレッド内でメイン ループを実行しているときです。ループのある時点で、両方とも Ingear.net dll を使用しようとしており、1 つのループが既にクラスのインスタンスを作成している場合、2 番目のループはloop はコンストラクター上にあるだけで、何もしません。

解決方法について何か提案はありますか?

4

2 に答える 2

1

まず、ライブラリがスレッド セーフかどうかをベンダーに確認することをお勧めします。

しかし、それまでの間、クラスの単一のインスタンスを作成し、それをコンストラクターの一部として 2 つのスレッド/ループに渡す (またはそれを使用してプロパティを設定する) ことができます。

うまくいかない可能性が高いですが、試してみるまでわかりません。

于 2012-11-12T21:40:49.067 に答える
0

アドオンはスレッドセーフです -

「controllername.disconnect()」を介して毎回手動でコントローラーを切断していましたが、何らかの理由でこれは実際には接続を閉じず、CIP 接続で限界に達しました。それを削除すると、コントローラーはどういうわけか自分で切断することを知っていました。

奇妙ですが、うまくいきます。

于 2012-12-10T12:11:47.030 に答える