Foxtable(狐表)用户栏目专家坐堂 → 普通函数改为异步函数


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

主题:普通函数改为异步函数

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
普通函数改为异步函数  发帖心情 Post By:2019/4/23 14:44:00 [只看该作者]

老师,我有一个APP抛上来数据,FT做的服务接收。
没有做异步函数,多客户同时上传就要等待排队。
但是不知道具体怎么异步函数。。
麻烦老师帮忙看下。。。。


    Case "pandian3.htm"
        Functions.Execute("pandian3",e)



之前的普通函数:

'将APP抛上来的数据存入一个txt文件
Dim fl1 As String = "e:\wwwroot\mobo\"
Dim wb As New weui
Dim e As  RequestEventArgs = args(0)

Dim cmd As new  SQLCommand
cmd.C
cmd.CommandTimeOut = 600

Dim space As TimeSpan = Date.now - #1/1/1970 00:00:00# '从1970年开始算毫秒值
Dim wjm As Long= space.TotalMilliseconds      '需要的时间毫秒值


Dim wjlj As String = fl1 & "盘点\" & e.PostValues("username") & e.PostValues("dy") & wjm & ".txt"
FileSys.CopyFile(fl1 & "wj\pd.txt", wjlj ,True)
FileSys.WriteAllText(wjlj , e.PostValues("txm"), True)
'以上是将APP抛上来的数据存入一个txt文件



'将txt的数据写入表格
Dim strs As String = FileSys.ReadAllText(wjlj,Encoding.Default)
Dim h As String
Dim m As String
Dim kw As String
Dim djbh As String

strs = strs.Trim()
Dim rs() As String = strs.Split("#")
For i As Integer = 0 To rs.Length - 1
    Dim cs() As String = rs(i).Split(",")
    If cs.Length = 6 Then
        Dim dr2 As DataRow = DataTables("盘点明细表导入").Addnew()
        dr2("首列") = cs(0)
        dr2("门店名称") = e.PostValues("username")
        dr2("姓名") = e.PostValues("dy")
        dr2("库位") = cs(1)
        dr2("条码") = cs(3)
        dr2("数量") = cs(4)
        dr2("扫码时间") = cs(5)
        dr2("盘点日期") = Date.Today
        dr2("上传时间") = Date.now
    End If
Next
'以上是将txt的数据写入表格


'将table的数据保存到数据库
If Date.now.Hour < 10 Then
    h = "0" & Date.now.Hour
Else
    h = Date.now.Hour
End If
If Date.now.Minute < 10 Then
    m = "0" & Date.now.Minute
Else
    m = Date.now.Minute
End If

'这一步我知道可以改成 SqlBulkCopy 的模式快速导入
For Each dr3 As DataRow In DataTables("盘点明细表导入").DataRows
    dr3("单据编号") = dr3("库位") & h & m
    cmd.CommandText =" insert into 盘点明细表(首列,门店名称,姓名,条码,扫码时间,数量,盘点日期,库位,上传时间,单据编号,扫码时间条码) values ('" & dr3("首列") & "' , '" & dr3("门店名称") & "'  , '" & dr3("姓名") & "' , '" & dr3("条码") & "', '" & dr3("扫码时间") & "' , '" & dr3("数量") & "','" & dr3("盘点日期") & "','" & dr3("库位") & "','" & dr3("上传时间") & "' ,'" & dr3("单据编号") & "' ,'" & dr3("扫码时间条码") & "' )"
    cmd.ExecuteNonQuery()
    dr3.Delete
Next

'以上是将table的数据保存到数据库

e.WriteString("服务器接收数据成功")


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


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

存入txt,如果不是同一个txt,可以用异步处理。

 

写入表格,这种用异步,有可能照成冲突的报错的(具体你要自己测试)

 

为什么要写入表格,然后再从表格那里删除?如果你用insert导入,加入事务,一次性提交。


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


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

改成异步,很简单,如

 

http://www.foxtable.com/mobilehelp/scr/278.htm

 


 回到顶部