[讨论]关于DataBase和Transaction的多个实例运行
各位,我有一段代码结构如下,当我敲了命令CC,函数将btn的Click事件挂到了Btn1_Click函数上,我单击Btn后,运行Btn_Click 函数,在初始化JIG类时,进到Jig的New函数中,又运行到我初始化A类,然后使用A类的一个DoSomething方法的时候,CAD报错。错误类型是LockViolation,好像是被锁了?但是我看不出来这样是哪里被锁了,Transaction是不是同时只能一个在用?或者,用完就Dispose后,才能开其他的呢?
那DataBase呢?
Namespace MyApplicationName
Class Main
<CommandMethod("CC")> _
Sub Commd '这个是我挂命令的函数
Addhandler Form.Btn1.Click , Addressof Btn1_Click'运行命令后,我把一个窗体上的按钮的单击事件挂到了另一个函数上
end Sub Commd
Sub Btn1_Click(byval ....)
'这里我实例化了一个Jig类
dim Jig as new Jig(...)
End Sub
End Class Main
Class Jig
Sub New(...)
Dim Db as Database = Application.Doc....
Dim Tr as Transaction = Db.Tr....
'这里我使用了Transaction做了一些事
Tr.comit()
Tr.Dispose()
'然后我实例化一个A类
Dim a as new A
a.DoSomething()
End Sub New
End Class Jig
Class A
Sub New()
End Sub New
Sub DoSomething
Dim Db as Database = Application.Doc....
Dim Tr as Transaction = Db.Tr....
'这里我也要用Tr做一些事
tr.Comit()
tr.Dispose()
End Sub
End Class A
End Namespace
<p>using doc.LockDocument()</p>
<p> </p>
<p>end using</p> 谢谢飞狐版主,不过版主提示太简洁了。
我昨天试着把一个一个用DataBase和Trans的地方都加了Using,也没用。
我想版主的意思应该是,我在A类里面把要用Database的地方用DocumentLock代替,是吧???
我这样写的,代码如下,不知道对不对。其实我还没搞清楚DocumentLock究竟是要怎么用的
这样写了之后,不提示LockViolation了,而提示对象未实例化,我也没搞清楚,是那个对象没实例化的。。。
Sub DoSomething Dim Doc as Document = Application.... Dim Loc as DocumentLock =Doc.LockDocument() Using Loc Dim Db as Database = Application.Doc.... Dim Tr as Transaction = Doc.Tr.... '这里我也要用Tr做一些事 tr.Comit() tr.Dispose() End Using End Sub doc => 当前文档
页:
[1]