Foxtable(狐表)用户栏目专家坐堂 → 关于异步编程,是否能增加一些实例


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

主题:关于异步编程,是否能增加一些实例

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


加好友 发短信
等级:五尾狐 帖子:1131 积分:8199 威望:0 精华:0 注册:2013/11/3 19:00:00
关于异步编程,是否能增加一些实例  发帖心情 Post By:2018/12/24 15:52:00 [只看该作者]

今年新增的异步编程,除了在BS的应用外,可否增加一些CS的开发应用示例,看了几次帮助,例子大概懂了
但实际开发应用在哪些方面,还是没头绪,如果能再多几个实例讲解,应该能更容易理解。谢谢

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


加好友 发短信
等级:五尾狐 帖子:1131 积分:8199 威望:0 精华:0 注册:2013/11/3 19:00:00
  发帖心情 Post By: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)

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


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

 

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

 

 


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


加好友 发短信
等级:五尾狐 帖子:1131 积分:8199 威望:0 精华:0 注册:2013/11/3 19:00:00
  发帖心情 Post By:2018/12/24 15:54:00 [只看该作者]

比如,在窗口的AFTERLOAD事件里,我写了上述代码,现在打开窗口的速度明显慢了,是否可以通过异步编程进行改进?

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


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

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

 

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

 

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


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


加好友 发短信
等级:五尾狐 帖子:1131 积分:8199 威望:0 精华:0 注册:2013/11/3 19:00:00
  发帖心情 Post By:2018/12/24 16:33:00 [只看该作者]

测试了一下,确实好用,不懂再来问,谢谢!!

 回到顶部