明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1995|回复: 8

[讨论]关于如何提高程序效率的问题

[复制链接]
发表于 2010-9-13 13:07:00 | 显示全部楼层 |阅读模式

开始搞.NET有个把月了,现在在版主以及各位大侠的帮助下,第一个.Net程序基本写完了。

写了大概有1500多行,心中所想的功能基本实现,但是还有些问题希望和各位讨论一下。就是关于程序执行效率的问题。

 

我的程序类似自定义了一类图元,然后通过各类事件让用户可以参数化修改图元。这个过程中,有时候参数修改较为复杂,我试了2类做法:

1. 把所有参数修改一次性全部重绘一次,对于未修改的参数,也重绘,只是图元不变化,但过程上看是重新赋值绘制了。这样的话,我就只需要做一次打开数据库的工作,完成所有操作。(我不知道这样说准确不准确,我把Dim DB As DataBase, Dim Tr as transaction,然后用tr做一些事叫做打开一次数据库)

2.我也试着把各个参数的修改定义了一个过程修改。这样可以通过不同参数变化调用不同过程修改图元。但是每个过程里面都有个打开数据库的过程。可以当修改参数较多的时候,就需要不断打开,关闭,又打开的过程。。。

不知道这两类做法那类比较好?或者还有更好的方法??

 

另外,为了响应自定义图元的一系列修改,我定义了很多事件,比如添加、双击、选择、取消选择、移动、复制、删除等等。可是我自己的程序也会有时候去添加、复制、删除图元。也会激发事件,于是我采用了一个全局变量Bool EventsLock,当我自己程序运行时,我把这个变量设为True,所有事件碰到这个略过,我的程序运行完后,再改回Fasle,事件函数才会响应。

这种做法可否有提高效率的作用。

 

各位,希望能把各位编程经历中,提高程序执行效率的好方法共享一下。不重代码,重思维,重方法!!

发表于 2010-9-13 16:25:00 | 显示全部楼层

响应自定义图元的一系列修改?

可以试下Overrule

 楼主| 发表于 2010-9-13 20:49:00 | 显示全部楼层

还有这个类? 额,那不是我最开始的思路都错了!!

这个Overrule是只能2010里面用吗?

发表于 2010-9-13 20:50:00 | 显示全部楼层

没错

相关内容看kean专题的相应部分

以及我的相关帖

 楼主| 发表于 2010-9-13 20:56:00 | 显示全部楼层

额~~,我想个问题,Overrule是不是就是在图面上把样子变化了,而实际在数据库里面还是原来的图元?

也就是说,如果我的CAD启动时后不加载我的程序,那么图元就会显示出它本来的样子了!是吧!?

发表于 2010-9-13 21:01:00 | 显示全部楼层
没错,只是障眼法,哈哈
 楼主| 发表于 2010-9-14 09:09:00 | 显示全部楼层

呵呵,又知道了点东西,以后需要障眼法的时候就知道怎么搞了!!谢谢版主!

不过我那个倒是不想用障眼法,要不然,别人不加载程序,就看不到正确的东西了!!

发表于 2010-9-14 12:42:00 | 显示全部楼层

自定义图元最好用Arx实现

简单的可以考虑Overrule

用事件处理感觉不是很好

 楼主| 发表于 2010-9-15 09:05:00 | 显示全部楼层

呵呵,Arx不会,从新开始太。。。而且要下好多的Vs对应版本什么的。我看到C++ 程序就~~

不过还好啦,我不是专业搞这个的,一个兴趣,做点小东西就自己用用,最多周边的人用用就好了!!

 

不过我最近从10版的net程序改到09版我都觉得有点郁闷了,我编的那个不通用。10用的好好的,09不能用,09用的好好的,10不能用。。杯具~~

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

本版积分规则

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

GMT+8, 2024-11-26 01:30 , Processed in 0.178087 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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