我是ASP.NET的新手,我需要开发一个与RFID阅读器通信的应用程序。
为了做到这一点,我有一个DLL项目,它运行一个管理与阅读器通信的线程,而我有另一个管理用户界面的ASP.NET项目。
这两个项目存在于同一个解决方案中,因此ASP.NET项目引用了DLL项目。
在应用程序开始时,我的“Global.asax”文件初始化读取器(DLL项目),运行其内部的线程,并在读卡器内部注册时,注册DLL触发的一些事件,如“CardInside”。
我怀疑的是,这个线程是否真的在运行,因为它没有做任何事情。我已经放置了多个断点以查看该部件是否正在运行,但没有任何停止。
我已经阅读了关于线程和asp.net的问题,但由于这个线程没有在http请求中使用:
- 在网页的同时在ISS服务器上运行线程有什么问题吗?
- aspx.cs文件是否正常注册由另一个对象触发的事件?好像它不是Web应用程序?
- 我正在使用visual studio 2015,我可以使用DEBUG对象在我的DLL代码行中显示消息吗?
非常感谢。
答案 0 :(得分:0)
是的,在IIS内部运行不是请求的线程存在问题。当没有请求进入IIS时,将拆除AppDomain,并Thread.Abort()
运行您的后台工作的线程将工作。
如果希望代码一直运行,则需要将代码移出IIS并将其更改为实际的Windows服务。然后,您可以将IIS部分与Windows服务进行通信(反之亦然)以处理Web组件的任何内容。