Foxtable(狐表)用户栏目专家坐堂 → 关于移动服务器代码变成多线程请教


  共有2350人关注过本帖树形打印复制链接

主题:关于移动服务器代码变成多线程请教

帅哥哟,离线,有人找我吗?
ap9709130
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
关于移动服务器代码变成多线程请教  发帖心情 Post By: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>")

运行暂时没有问题,但我想试试变成多线程会不会更好,但因为有参数,不知道怎么变,请老师指教!多谢!

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/7 9:34:00 [只看该作者]

多线程不是可以传递一个参数的么?你可以把e参数传递过去即可。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/7 9:36:00 [只看该作者]

比如

 

全局代码

 

Public Sub thread_sub1(ByVal obj As Object)
    functions. Execute("多线程操作", obj)
End Sub

 

内部函数

 

Dim obj = args(0)

Dim cmd As New SQLCommand
Dim Count As Integer
cmd.CommandText = "DELETE FROM {订单} WHERE 产品 = 'PD01'"
Count= cmd.ExecuteNonQuery()
Messagebox.Show( "总共删除" & Count & "行!")

 

调用代码

 

Dim nthread As New System.Threading.Thread(AddressOf thread_sub1)
nthread.start(参数)


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/8/7 12:08:00 [只看该作者]

这种可以的,但是在过程中函数名称是变量,这种要怎么写?

 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/8/7 12:09:00 [只看该作者]

因为我每一个页面写成一个函数,帮助上也是这么建议的


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/8/7 12:11:00 [只看该作者]

functions. Execute(obj)

这样写就可以了,多谢老师。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/7 12:51:00 [只看该作者]

以下是引用ap9709130在2017/8/7 12:08:00的发言:
这种可以的,但是在过程中函数名称是变量,这种要怎么写?

 

你在httprequest事件启用多线程,然后多线程里面根据e参数调用不同的页面,不行?代码基本一样的。


 回到顶部
帅哥哟,离线,有人找我吗?
lhpc120
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:633 积分:6320 威望:0 精华:0 注册:2011/5/8 13:21:00
  发帖心情 Post By:2017/8/7 13:13:00 [只看该作者]

收藏~~

 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By: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)

就会出错。多线程代码要怎么写?



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/9 9:23:00 [只看该作者]

改成

 

Public Sub thread_sub1(ByVal e as object)


 回到顶部
总数 13 1 2 下一页