我正在研究一個項目,該項目必須同時監視多個RFID閱讀器。 RFID閱讀器有一個DLL文件,它公開了與之交互的方法。一種方法是打開一個連接。當我調用靜態DLL連接到一個RFID閱讀器時,它工作正常。如果我運行我的應用程序的多個實例,他們都會調用靜態DLL並連接到不同的RFID閱讀器。不過,我需要僅運行主應用程序的單個實例,然後將單個線程連接到單個RFID閱讀器。但是當我這樣做時,第一個連接是成功的,但任何其他線程都無法調用該DLL,因爲我認爲它在共享內存空間中,因此被第一個線程佔用。我怎麼解決這個問題?從多個線程調用RFID閱讀器的靜態DLL
這裏是DoWork的溫控功能是由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