以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于移动服务器代码变成多线程请教 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=104850) |
-- 作者:ap9709130 -- 发布时间:2017/8/6 23:41:00 -- 关于移动服务器代码变成多线程请教 各位老师 我想把服务器代码变成多线程,但因为有参数,不知道怎么弄,请帮忙!我的代码如下: Dim sb As New StringBuilder sb.AppendLine("<!doctype html>") sb.AppendLine("<html>") sb.appendLine("<head>") sb.AppendLine("<meta charset=\'gb2312\'>") sb.AppendLine("<meta name=\'viewport\' c>") sb.appendLine("</head>") sb.AppendLine("<body>") Dim wb As New weui e.Resp Dim zd As String = e.path Dim dw As Integer = zd.IndexOf(".") zd = zd.SubString(0,dw) If zd > "" Then Dim qd As String = Functions.Execute("checkname",zd) If qd = 1 Then Functions.Execute(zd,e) Else e.WriteString("正在建设中,请期待!") End If End If sb.AppendLine("</body>") sb.AppendLine("</html>") 运行暂时没有问题,但我想试试变成多线程会不会更好,但因为有参数,不知道怎么变,请老师指教!多谢!
|
-- 作者:有点甜 -- 发布时间:2017/8/7 9:34:00 -- 多线程不是可以传递一个参数的么?你可以把e参数传递过去即可。 |
-- 作者:有点甜 -- 发布时间:2017/8/7 9:36:00 -- 比如
全局代码
Public Sub thread_sub1(ByVal obj As Object)
内部函数
Dim obj = args(0) Dim cmd As New SQLCommand
调用代码
Dim nthread As New System.Threading.Thread(AddressOf thread_sub1) |
-- 作者:ap9709130 -- 发布时间:2017/8/7 12:08:00 -- 这种可以的,但是在过程中函数名称是变量,这种要怎么写? |
-- 作者:ap9709130 -- 发布时间:2017/8/7 12:09:00 -- 因为我每一个页面写成一个函数,帮助上也是这么建议的 |
-- 作者:ap9709130 -- 发布时间:2017/8/7 12:11:00 -- functions. Execute(obj) 这样写就可以了,多谢老师。
|
-- 作者:有点甜 -- 发布时间:2017/8/7 12:51:00 -- 以下是引用ap9709130在2017/8/7 12:08:00的发言:
这种可以的,但是在过程中函数名称是变量,这种要怎么写?
你在httprequest事件启用多线程,然后多线程里面根据e参数调用不同的页面,不行?代码基本一样的。 |
-- 作者:lhpc120 -- 发布时间:2017/8/7 13:13:00 -- 收藏~~ |
-- 作者:ap9709130 -- 发布时间:2017/8/8 23:11:00 -- 老师,代码如下,但是不行: Public Sub thread_sub1(ByVal e as RequestEventArgs) Dim sb As New StringBuilder sb.AppendLine("<!doctype html>") sb.AppendLine("<html>") sb.appendLine("<head>") sb.AppendLine("<meta charset=\'gb2312\'>") sb.AppendLine("<meta name=\'viewport\' c>") sb.appendLine("</head>") sb.AppendLine("<body>") Dim wb As New weui e.Resp Dim zd As String = e.path Dim dw As Integer = zd.IndexOf(".") zd = zd.SubString(0,dw) If zd > "" Then Dim qd As String = Functions.Execute("checkname",zd) If qd = 1 Then Functions.Execute(zd,e) Else e.WriteString("正在建设中,请期待!") End If End If sb.AppendLine("</body>") sb.AppendLine("</html>") End Sub 过程没有问题,可以通过。 但是在httprequest事件启用多线程时代码如下: Dim nthread As New System.Threading.Thread(AddressOf thread_sub1) nthread.start(e) 就会出错。多线程代码要怎么写? |
-- 作者:有点甜 -- 发布时间:2017/8/9 9:23:00 -- 改成
Public Sub thread_sub1(ByVal e as object) |