乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 46|回复: 3

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

[复制链接]

14

主题

36

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
92
发表于 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.          _
  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
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-9-3 22:52:00 | 显示全部楼层
using doc.LockDocument()

end using
回复

使用道具 举报

14

主题

36

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
92
发表于 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
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-9-4 10:51:00 | 显示全部楼层
doc => 当前文档
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 07:34 , Processed in 0.396815 second(s), 71 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表