【发布时间】:2012-11-08 07:41:22
【问题描述】:
我正在 global.asax 文件中编写一个函数,该函数需要从 application_start 中声明的线程调用。 它在我的调试模式下工作正常,但在托管时不调用回调函数。
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
writeLog("Application Initialized")
writeLog("Thread is starting....")
Dim T As New Threading.Thread(AddressOf UpdateQueue)
T.Start()
writeLog("Thread Started....")
End Sub
Sub UpdateQueue()
writeLog("UpdateQueue entry")
While Q.Count > 0
' Some logic
End While
writeLog("UpdateQueue going for idle state")
Threading.Thread.Sleep(5000)
UpdateQueue()
End Sub
我看到像这样的日志文件 线程启动 线程开始
但没有在“UpdateQue”函数中打印的其他消息 我也尝试过其他方法。 1. 使用定时器:与上述相同的问题 2. 使用 Thread.Timers:与上述相同的问题 3、直接从application_start调用UpdateQueue函数:进入UpdateQue函数并写入日志条目。
我无法弄清楚服务器出现问题的原因。我在我的公共 IP(不是来自托管服务提供商)中使用 IIS 7,因此我可以根据需要进行任何更改。
【问题讨论】:
-
由于
UpdateQueue的递归,最终你会得到一个堆栈溢出。 -
writeLog()中有什么内容?也许有一把锁。 -
writeLog 只是写入文件,而不是自己锁定
-
你能建议我吗,我该如何进行后台处理
标签: asp.net vb.net multithreading iis