以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于异步编程,是否能增加一些实例  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=129223)

--  作者:zhy400137
--  发布时间:2018/12/24 15:52:00
--  关于异步编程,是否能增加一些实例
今年新增的异步编程,除了在BS的应用外,可否增加一些CS的开发应用示例,看了几次帮助,例子大概懂了
但实际开发应用在哪些方面,还是没头绪,如果能再多几个实例讲解,应该能更容易理解。谢谢

--  作者:zhy400137
--  发布时间:2018/12/24 15:53:00
--  
e.Form.Strips.Clear()
\'加载数据
Functions.Execute("数据加载",DataTables("客流信息"),"填写用户","填写部门","(日期=\'" & Date.Today & "\')",True,e.Form,e.Form.Controls("SplitContainer2"),20,"分页工具栏1")
\'设置按钮权限
Functions.Execute("按钮权限",e.Form)
\'设置字段权限
Functions.Execute("字段控制",Tables("客流信息"))
\'生成目录树
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.BuildTree("客流信息", "门店名称")
tr.Nodes.Insert("显示所有数据",0)
\'绘制窗口菜单
Functions.Execute("绘制窗口菜单",e.Form.Name,e.Form,e.form.Controls("Panel1"))
\'禁用复制粘贴功能
DataTables("客流信息").AllowClipBoard = False
If _UserRoles = "系统管理员"
    DataTables("客流信息").AllowClipBoard = True
End If
\'省直辖市,地级市 字典设置
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.ConnectionName = DataSource
cmd.CommandText = "S ELECT 省直辖市,地级市 F rom {行政区域}"
dt = cmd.ExecuteReader()
Dim tb As New DropTreeBuilder
tb.SourceTable = dt\'指定目录树表
tb.TreeCols = "省直辖市|地级市" \'指定用于生成目录树的列
tb.SourceCols = "省直辖市|地级市" \'指定数据来源列
tb.ReceiveCols = "省直辖市|地级市" \'指定数据接收列
Tables("客流信息").Cols("省直辖市").DropTree = tb.Build()

\'区域名称 门店名称 字典设置
Dim cmd1 As New SQLCommand
Dim dt1 As DataTable
cmd1.ConnectionName = DataSource
cmd1.CommandText = "SE LECT 区域名称,地区名称,门店名称 Fr om {组织架构}"
dt1 = cmd1.ExecuteReader()
Dim tb1 As New DropTreeBuilder
tb1.SourceTable = dt1 \'指定目录树表
tb1.TreeCols = "区域名称|地区名称|门店名称" \'指定用于生成目录树的列
tb1.SourceCols = "区域名称|地区名称|门店名称" \'指定数据来源列
tb1.ReceiveCols = "区域名称|地区名称|门店名称" \'指定数据接收列
Tables("客流信息").Cols("区域名称").DropTree = tb1.Build()
\'关闭交叉统计中直接统计后台数据的功能
Tables("客流信息").AllowBackgroundStatistics = False

\'设置数据字典
Dim dr As DataRow
For Each c As Col In Tables("客流信息").Cols
    dr = DataTables("公共字典").sqlFind("[表名] = \'客流信息\' And [列名] = \'" & c.Name & "\'")
    If dr IsNot Nothing Then
        c.ComboList = dr("项目名称")
    End If
Next
\'设置分页条数的下拉选择框
e.Form.Strips("分页工具栏1").Items.InsertControl("PageRows",e.Form.Controls("Combobox1"),2)

--  作者:有点甜
--  发布时间:2018/12/24 15:53:00
--  

 

异步编程,实际上你理解成【后台运行】即可。把你的功能,封装成一个函数,然后调用即可的。没什么特别。

 

 


--  作者:zhy400137
--  发布时间:2018/12/24 15:54:00
--  
比如,在窗口的AFTERLOAD事件里,我写了上述代码,现在打开窗口的速度明显慢了,是否可以通过异步编程进行改进?
--  作者:有点甜
--  发布时间:2018/12/24 15:57:00
--  
以下是引用zhy400137在2018/12/24 15:54:00的发言:
比如,在窗口的AFTERLOAD事件里,我写了上述代码,现在打开窗口的速度明显慢了,是否可以通过异步编程进行改进?

 

比如你把afterload事件的全部代码写到一个函数里面,然后再在afterload里面调用函数。那么,就可以先显示窗口出来,然后后台慢慢一步一步执行代码的。

 

也就是说,异步编程基本上不会提交效率,但可以先显示出来不影响你前台操作,然后其慢慢在后台执行完成代码。


--  作者:zhy400137
--  发布时间:2018/12/24 16:33:00
--  
测试了一下,确实好用,不懂再来问,谢谢!!