enocheasty 发表于 2010-9-13 13:07:00

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

<p>开始搞.NET有个把月了,现在在版主以及各位大侠的帮助下,第一个.Net程序基本写完了。</p>
<p>写了大概有1500多行,心中所想的功能基本实现,但是还有些问题希望和各位讨论一下。就是关于程序执行效率的问题。</p>
<p>&nbsp;</p>
<p>我的程序类似自定义了一类图元,然后通过各类事件让用户可以参数化修改图元。这个过程中,有时候参数修改较为复杂,我试了2类做法:</p>
<p>1. 把所有参数修改一次性全部重绘一次,对于未修改的参数,也重绘,只是图元不变化,但过程上看是重新赋值绘制了。这样的话,我就只需要做一次打开数据库的工作,完成所有操作。(我不知道这样说准确不准确,我把Dim DB&nbsp;As DataBase, Dim Tr as transaction,然后用tr做一些事叫做打开一次数据库)</p>
<p>2.我也试着把各个参数的修改定义了一个过程修改。这样可以通过不同参数变化调用不同过程修改图元。但是每个过程里面都有个打开数据库的过程。可以当修改参数较多的时候,就需要不断打开,关闭,又打开的过程。。。</p>
<p>不知道这两类做法那类比较好?或者还有更好的方法??</p>
<p>&nbsp;</p>
<p>另外,为了响应自定义图元的一系列修改,我定义了很多事件,比如添加、双击、选择、取消选择、移动、复制、删除等等。可是我自己的程序也会有时候去添加、复制、删除图元。也会激发事件,于是我采用了一个全局变量Bool EventsLock,当我自己程序运行时,我把这个变量设为True,所有事件碰到这个略过,我的程序运行完后,再改回Fasle,事件函数才会响应。</p>
<p>这种做法可否有提高效率的作用。</p>
<p>&nbsp;</p>
<p>各位,希望能把各位编程经历中,提高程序执行效率的好方法共享一下。不重代码,重思维,重方法!!</p>

雪山飞狐_lzh 发表于 2010-9-13 16:25:00

<p>响应自定义图元的一系列修改?</p>
<p>可以试下Overrule</p>

enocheasty 发表于 2010-9-13 20:49:00

<p>还有这个类? 额,那不是我最开始的思路都错了!!</p>
<p>这个Overrule是只能2010里面用吗?</p>

雪山飞狐_lzh 发表于 2010-9-13 20:50:00

<p>没错</p>
<p>相关内容看kean专题的相应部分</p>
<p>以及我的相关帖</p>

enocheasty 发表于 2010-9-13 20:56:00

<p>额~~,我想个问题,Overrule是不是就是在图面上把样子变化了,而实际在数据库里面还是原来的图元?</p>
<p>也就是说,如果我的CAD启动时后不加载我的程序,那么图元就会显示出它本来的样子了!是吧!?</p>

雪山飞狐_lzh 发表于 2010-9-13 21:01:00

没错,只是障眼法,哈哈

enocheasty 发表于 2010-9-14 09:09:00

<p>呵呵,又知道了点东西,以后需要障眼法的时候就知道怎么搞了!!谢谢版主!</p>
<p>不过我那个倒是不想用障眼法,要不然,别人不加载程序,就看不到正确的东西了!!</p>

雪山飞狐_lzh 发表于 2010-9-14 12:42:00

<p>自定义图元最好用Arx实现</p>
<p>简单的可以考虑Overrule</p>
<p>用事件处理感觉不是很好</p>

enocheasty 发表于 2010-9-15 09:05:00

<p>呵呵,Arx不会,从新开始太。。。而且要下好多的Vs对应版本什么的。我看到C++ 程序就~~</p>
<p>不过还好啦,我不是专业搞这个的,一个兴趣,做点小东西就自己用用,最多周边的人用用就好了!!</p>
<p>&nbsp;</p>
<p>不过我最近从10版的net程序改到09版我都觉得有点郁闷了,我编的那个不通用。10用的好好的,09不能用,09用的好好的,10不能用。。杯具~~</p>
页: [1]
查看完整版本: [讨论]关于如何提高程序效率的问题