明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1750|回复: 3

[讨论]关于DataBase和Transaction的多个实例运行

[复制链接]
发表于 2010-9-3 22:46:00 | 显示全部楼层 |阅读模式
各位,我有一段代码结构如下,当我敲了命令CC,函数将btn的Click事件挂到了Btn1_Click函数上,我单击Btn后,运行Btn_Click 函数,在初始化
JIG类时,进到Jig的New函数中,又运行到我初始化A类,然后使用A类的一个DoSomething方法的时候,CAD报错。错误类型是LockViolation,好像是被锁了?但是我看不出来这样是哪里被锁了,Transaction是不是同时只能一个在用?或者,用完就Dispose后,才能开其他的呢?
那DataBase呢?
  1. Namespace MyApplicationName
  2.     Class Main
  3.         <CommandMethod("CC")> _
  4.                Sub Commd '这个是我挂命令的函数
  5.                       Addhandler Form.Btn1.Click , Addressof Btn1_Click  '运行命令后,我把一个窗体上的按钮的单击事件挂到了另一个函数上
  6.                end Sub Commd
  7.                
  8.                Sub Btn1_Click(byval ....)
  9.                      '这里我实例化了一个Jig类
  10.                      dim Jig as new Jig(...)
  11.                End Sub
  12.     End Class Main
  13.     Class Jig
  14.         Sub New(...)
  15.              Dim Db as Database = Application.Doc....
  16.              Dim Tr as Transaction = Db.Tr....
  17.              '这里我使用了Transaction做了一些事
  18.              Tr.comit()
  19.              Tr.Dispose()
  20.              '然后我实例化一个A类
  21.               Dim a as new A
  22.               a.DoSomething()
  23.         End Sub New
  24.     End Class Jig
  25.     Class A
  26.        Sub New()
  27.        End Sub New
  28.        Sub DoSomething
  29.              Dim Db as Database = Application.Doc....
  30.              Dim Tr as Transaction = Db.Tr....
  31.              '这里我也要用Tr做一些事
  32.              tr.Comit()
  33.              tr.Dispose()
  34.        End Sub
  35.     End Class A
  36. End Namespace
发表于 2010-9-3 22:52:00 | 显示全部楼层

using doc.LockDocument()

 

end using

 楼主| 发表于 2010-9-4 09:32:00 | 显示全部楼层
谢谢飞狐版主,不过版主提示太简洁了。
我昨天试着把一个一个用DataBase和Trans的地方都加了Using,也没用。

我想版主的意思应该是,我在A类里面把要用Database的地方用DocumentLock代替,是吧???
我这样写的,代码如下,不知道对不对。其实我还没搞清楚DocumentLock究竟是要怎么用的

这样写了之后,不提示LockViolation了,而提示对象未实例化,我也没搞清楚,是那个对象没实例化的。。。
  1.        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
发表于 2010-9-4 10:51:00 | 显示全部楼层
doc =&gt; 当前文档
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 00:43 , Processed in 0.166558 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表