以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [已解决]请教Invoke执行委托 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63352) |
-- 作者:不倒的翁 -- 发布时间:2015/1/19 14:08:00 -- [已解决]请教Invoke执行委托 Delegate Sub TestDG(ByVal Val() As object) \'声明委托 Public Sub _TestDG(ByVal Val() As object) \'委托方法 msgbox(Val(0) & "-" & Val(1)) End Sub Dim ValArr() As object = {1,2} Dim TDG As New TestDG(Addressof _TestDG) \'实例化委托 BaseMainForm.Invoke(TDG ,ValArr) \'执行委托 代码如上 传参都为Object类型数组,但执行Invoke时,报“参数计数不匹配”错误。 请教各位老师,谢谢。 [此贴子已经被作者于2015-1-19 14:46:28编辑过]
|
-- 作者:有点甜 -- 发布时间:2015/1/19 14:14:00 -- 你的委托跟basemainform有什么关系?直接用啊
Dim ValArr() As object = {1,2} |
-- 作者:不倒的翁 -- 发布时间:2015/1/19 14:14:00 -- 因多线程处理FT控件数据,线程中对控件进行操作会报 "BindingSource 不能是自己的数据源。请不要将 DataSource 和 DataMember 属性设置为循环引用 BindingSource 的值"错误,所以需要进行委托操作。 测试时,将数组拆分后进行传参时不报错,但没有数组来的灵活。 |
-- 作者:有点甜 -- 发布时间:2015/1/19 14:25:00 -- Dim ValArr() As object = {1,2} Dim TDG As New TestDG(Addressof _TestDG) \'实例化委托 BaseMainForm.Invoke(TDG,new object() {valarr}) \'执行委托 |
-- 作者:不倒的翁 -- 发布时间:2015/1/19 14:36:00 -- 以下是引用有点甜在2015-1-19 14:14:00的发言:
感谢甜版。问题解决了。你的委托跟basemainform有什么关系?直接用啊
Dim ValArr() As object = {1,2} 关于BaseMainFrom使用Invoke方法: 如果是在线程中实例化委托直接用委托Invoke调用方法的话和不用委托不是一样么? 网上资料查了下,委托是为了在线程中对UI进行操作时才使用,避免引起"BindingSource 不能是自己的数据源。请不要将 DataSource 和 DataMember 属性设置为循环引用 BindingSource 的值"的错。 我就理解为BaseMainFrom还是主进程,线程中用BaseMainFrom的 Invoke还是在主进程中对UI进行操作。 甜版你的方法我试试看会报错不。。。 再次感谢。 |
-- 作者:ycli368 -- 发布时间:2015/10/11 14:27:00 -- 委托给主窗口,程序还是会假死吧 |
-- 作者:大红袍 -- 发布时间:2015/10/11 15:20:00 -- 请坐出错的例子上来。假死正常啊。load的时候,就是会假死的啊 |
-- 作者:大红袍 -- 发布时间:2015/10/11 15:20:00 -- 要不你就用异步加载
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=49436&skin=0 |
-- 作者:ycli368 -- 发布时间:2015/10/11 15:38:00 -- 保存可以异步不?窗口对加载及时性有依赖 [此贴子已经被作者于2015/10/11 15:39:11编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/10/11 15:47:00 -- 以下是引用ycli368在2015/10/11 15:38:00的发言:
保存可以异步不?窗口对加载及时性有依赖 [此贴子已经被作者于2015/10/11 15:39:11编辑过]
一行一行保存。比如
CurrentTable.AddNew(100) |