死循环的问题vb.net中winform的“主程序”怎样移植到Web应用程序中

EmbededSystem 2006-09-19 12:10:55
谢谢大家来看我的问题!
我的系统是一个vb.net的Web应用程序,客户端通过浏览器来访问(基本是废话),我的服务器端连接了多个单片机,通过串口通信(做一些信号采集)。
我需要这个采集程序一直在运行,原来在winform中我是在窗体加载事件中做一个死循环,这样就可以和单片机一直保持通信。
现在我要在Web应用程序中也要完成这样的一个功能。我尝试的方法是在Global.asax文件中的Application_Start事件中做死循环,不断的通信,但是这样程序会卡死,是因为这个死循环占用了CPU接近94%的使用。
原来的winform中我使用Application.DoEvents()可以放开CPU来响应系统的时间,这样虽然是死循环但是程序运行流畅,但是在Web应用程序中没找到Application.DoEvents()这样的函数。
如果不用死循环,我在Application_Start事件中只和单片机通信一次或几次,是可以做到的。
请问高手有什么解决方法?是有类似Application.DoEvents()的函数呢?还是这样的程序要用其他方式处理?
...全文
178 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
EmbededSystem 2006-09-20
  • 打赏
  • 举报
回复
我做了个定时器,利用产生的中断来负责和低层的通信。
lanWay 2006-09-19
  • 打赏
  • 举报
回复
同意樓上的,改成windows的服務庫,讓客戶第一次訪問時,自動安裝服務,之后讓服務與web通信即可
华芸智森 2006-09-19
  • 打赏
  • 举报
回复
改为WINDOWS的服务来处理。WEBFORM只与服务通信。或干脆将服务的数据写到数据库里。WEBFORM每次只读数据库。
EmbededSystem 2006-09-19
  • 打赏
  • 举报
回复
在Application_Start事件中开启线程去监听串口

做个线程可以试试,但是我不是监听串口,通信的主动方是我的服务器,所以可能也无法解决,因为这个线程也要不断的去发送数据出去,除非是由操作系统自动的安排线程的调用,来使其他的进程得到使用
EmbededSystem 2006-09-19
  • 打赏
  • 举报
回复
Web服务吗?好象也不能使用Application.DoEvents()。我是需要一个死循环做我的主程序,
但是也要响应系统事件,类似开放中断一样。
华芸智森 2006-09-19
  • 打赏
  • 举报
回复
改为服务
Knight94 2006-09-19
  • 打赏
  • 举报
回复
to Application_Start事件中做死循环,不断的通信,但是这样程序会卡死,是因为这个死循环占用了CPU接近94%的使用。

在Application_Start事件中开启线程去监听串口
HAVENT 2006-09-19
  • 打赏
  • 举报
回复
做成服务,Web和Win的都可以调用
EmbededSystem 2006-09-19
  • 打赏
  • 举报
回复
我尝试添加了System.Windows.Forms.dll引用。然后可以在循环中添加
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' 在应用程序启动时激发
While (1)
System.Windows.Forms.Application.DoEvents()
dosomething...
End While
End Sub

但是这样好象还是没放开CPU的控制权,页面根本启动不起来,进度条只能到一半,是不是这个函数只能对winform起作用?



tonykong 2006-09-19
  • 打赏
  • 举报
回复
因为,Web应用程式的时延造成了整个系统实时性能的下降,将数据保存到数据库中应该是比较合理的方法。

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧