私は同時に複数のRFIDリーダーを監視する必要があるプロジェクトに取り組んでいます。 RFIDリーダは、それと対話する方法を公開するDLLファイルを有する。 1つの方法は、その接続を開くことです。静的DLLを単一のRFIDリーダーに接続すると、それはうまく動作します。私は私のアプリの複数のインスタンスを実行する場合は、すべての静的DLLを呼び出すと、別のRFIDリーダーに接続します。しかし、私はメインアプリケーションの1つのインスタンスだけを実行し、個々のスレッドを個々のRFIDリーダーに接続させる必要があります。しかし、私がこれを行うと、最初の接続は成功しますが、他のスレッドは共有メモリ空間にあると仮定してDLLを呼び出すことができず、したがって最初のスレッドが関与します。どうすればこの問題を解決できますか?ここ複数のスレッドからRFIDリーダー用静的DLLを呼び出す
は静的変数は、プロセスごとに一意である変数であるThread.Start
public void DoWork()
{
__parent.UpdateLog(ReaderIP + ": working.");
int openresult = 0;
int frmcomportindex = 0;
int fOpenComIndex;
byte fComAdr = Convert.ToByte("FF", 16); // $FF
//this line works fine for the first thread adn fails for all following threads
// but works fine if I run multiple instances of my app and get each to connect to a single RFID reader
openresult = StaticClassReaderB.OpenNetPort(ReaderPort, ReaderIP, ref fComAdr, ref frmcomportindex);
fOpenComIndex = frmcomportindex;
この記事をチェックしてください:https://msdn.microsoft.com/en-us/library/system.threading.thread.beginthreadaffinity(v=vs.110).aspx – Fruchtzwerg