以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于异步加载,发现一个问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=49263) |
-- 作者:blackzhu -- 发布时间:2014/4/15 11:12:00 -- 关于异步加载,发现一个问题 Sql 远程数据源 原来我是这样写的,打开窗口没有问题 DataTables("产品维护").LoadFilter = "[_Identify] Is Null" DataTables("产品维护").Load DataTables("产品维护").LoadFilter = "[_Identify] Is Null" DataTables("产品维护").LoadAsync() 因为我找不到错误的原因,所以我这样加了两条验证的代码: msgbox(1) DataTables("产品维护").LoadFilter = "[_Identify] Is Null" DataTables("产品维护").LoadAsync() msgbox(2) 但是这样一加,不出任何错误提示了,我认为是不是因为延迟的原因呀!
[此贴子已经被作者于2014-4-15 11:13:42编辑过]
|
-- 作者:Bin -- 发布时间:2014/4/15 11:15:00 -- 赋值你的代码,新建项目测试了一下.没发现问题. 上个例子看看.
|
-- 作者:blackzhu -- 发布时间:2014/4/15 11:20:00 -- 我测试了 不是这个原因,我再找找. [此贴子已经被作者于2014-4-15 11:21:27编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2014/4/15 11:24:00 -- 老朱,既然不加载数据,没有必要异步了。 |
-- 作者:blackzhu -- 发布时间:2014/4/15 11:25:00 -- 奇了怪了,红字部分加了就不出错,不加就出现提示了: DataTables("产品维护").LoadFilter = "[_Identify] Is Null" DataTables("产品维护").LoadAsync() msgbox(1) Dim dr As DataRow CType(e.Form.Controls("RecordGrid1").BaseControl, C1.Win.C1FlexGrid.C1FlexGrid).Styles.EmptyArea.BackColor = Drawing.Color.WhiteSmoke Dim ctl As WinForm.CheckedComboBox = e.Form.Controls("列表") ctl.Value = "类型,条码,元器件名称" Dim cmd As New SQLCommand Dim dt As DataTable cmd.C cmd.CommandText = "SELECT * From{产品维护}" dt = cmd.ExecuteReader() For Each cl As DataCol In dt.DataCols Select Case cl.Name Case "类型", "条码", "元器件名称", "型号", "封装", "供应商编号", "供应商名称" ctl.Items.Add(cl.Name) End Select Next For Each c As WinForm.Control In Forms(FrmName).Controls If TypeOf c Is WinForm.Button Then \'判断控件是否是文本框 Dim t As WinForm.Button = c \'使用特定类型的变量引用控件 t.FlatStyle = FlatStyle.Standard dr = DataTables("系统设置表").SQLFind("类型=\'按钮风格\' And 用户ID=\'" & Vars("_UserID") & "\'") If dr IsNot Nothing Then t.VisualStyle = CInt(dr("系统值")) Else t.VisualStyle = 4 End If End If Next MsgBox(4) Dim piv As WinForm.PictureViewer = e.Form.Controls("PictureViewer1") Dim ftp As New FTPClient dr = DataTables("系统设置表").SQLFind("用户ID=\'远程文件服务器设置\' And 类型=\'服务器地址\'") If dr IsNot Nothing Then ftp.Host = dr("系统值") End If dr = DataTables("系统设置表").SQLFind("用户ID=\'远程文件服务器设置\' And 类型=\'用户名\'") If dr IsNot Nothing Then ftp.Account = dr("系统值") End If dr = DataTables("系统设置表").SQLFind("用户ID=\'远程文件服务器设置\' And 类型=\'密码\'") If dr IsNot Nothing Then ftp.Password = dr("系统值") End If dr = DataTables("系统设置表").SQLFind("用户ID=\'远程文件服务器设置\' And 类型=\'端口\'") If dr IsNot Nothing Then ftp.Port = dr("系统值") End If ftp.ChangeDir("\\产品图片") piv.FTPClient = ftp |
-- 作者:blackzhu -- 发布时间:2014/4/15 11:26:00 -- 我把这个异步改成同步 一点问题都没 |
-- 作者:Bin -- 发布时间:2014/4/15 11:26:00 -- DataTables("产品维护").LoadAsync() 放到最后看看.
|
-- 作者:blackzhu -- 发布时间:2014/4/15 11:31:00 -- 这个好奇怪 还是检查下 我把这代码 DataTables("产品维护").LoadFilter = "[_Identify] Is Null" DataTables("产品维护").LoadAsync() 放到最后来执行,就没有问题了.
|
-- 作者:Bin -- 发布时间:2014/4/15 11:32:00 -- 那就证实了我的猜想,解析这个有点麻烦. 需要了解一定多线程专业知识. 能解决问题就好.
|
-- 作者:lsy -- 发布时间:2014/4/15 11:34:00 -- 楼主为我等趟路。 |