我有一个用于轮询GSM调制解调器的DLL。
当调制解调器收到SMS时,DLL会预处理内容并通过中断将其发送给应用程序。 应用程序处理数据并将结果发送回DLL,DLL通过SMS将其传递给发送方。 如果系统有两个调制解调器,则应用程序有两个dll实例。
IMyModem modem1 = new MyModem(...);
IMyModem modem2 = new MyModem(...);
我认为内存中有两个独立的Dll实例,因此我只需要DLL中的一个System.Timers.Timer。即两个独立的副本将彼此独立地流逝。
应用程序UI也可以影响调制解调器。 (结果,请求隔离,测试tx等)。
为了控制UI请求和轮询之间的交互,我在DLL中有两个静态互斥锁,每个调制解调器一个。定时器已用处理程序和其他例程知道它们在实例化期间被告知它们正在处理哪个调制解调器。所以他们知道WaitOne()上的Mutex是哪个。
我已经测试过了,虽然看起来工作正常,但我担心设计中可能存在一个缺点,直到它处于生产负荷之下才会出现。 我很感激'小组'对此事的看法。