日期:2014-05-18  浏览次数:20786 次

上千变量的读写和几百个计时器的大量数据的工程软件设计问题
C#新手,问题描述的很不专业,请高手们解答的时候尽量多说点细节,只提个概念可能还是一头雾水

问题一:
现在手头有个工程软件要开发,其中涉及大量中间变量的读写,预计有一两千个
不知道这样的情况,用什么方式存储和读写这些中间变量,需要事先在主类的开头声明好么?

设想的方法一:
用 ini文件 实现读写的。ini文件的读写是调用win32的api,非托管代码不安全。
方法二:
Access 数据库读写中间变量。Access应该比 ini的读写快一点,而且不用调用 win32 api,代码安全。
方法三:
VS里貌似有一个程序参数的,忘了在哪儿找过的??好像本质上是个XML表,.NET 里用这种 XML 来代替以前的 ini文件 实现参数读写控制
方法四:
静态类里声明好所有的成员变量,在主类里用 静态类.成员名 方式逐个调用。但是需要对静态类的每个成员写 get set 的属性,也挺麻烦的
方法五:
最直接的,在winform的构造器里把所有几千个变量声明好,再接下来的程序里随意调用。缺点很明显。

不知道大家有什么建议?这些变量之间没有什么互相联系,都是相对独立的例如 M1AAA, M1AAB, M1AAC,一共7套这样的中间变量,大部分中间变量在工程计算里内部临时调用,另外一部分中间变量最终要输出到界面以及外部excel供分析作图用

问题二:
C#主UI线程只是启动程序和更新界面,具体的活儿都有几百个定时器 System.Timers.Timer 触发完成,定时器线程里的活儿计算完或者等待处理完以后用delegate返回更新UI线程中界面的显示值。
现在刚开始做程序,只有十几个定时器还比较容易搞清楚其中的逻辑关系。等到再往后开发,就担心这些定时器之间互相会不会冲突?有没有什么比较好的方式管理这些定时器之间的顺序逻辑?

比如有一个总定时器 G1 控制 第一台机器的工作时间,定时到后再次触发自身重新启动一次定时,同时更新第一第二台机器的UI显示值。这样的 G1到G7的全局定时,会在某些随机时间被终止(机器随机坏了,不再加工,因此终止),此时启动终止后的处理机制,另一套定时器 MTTR1, MTBF1 开始计算终止过程中对生产线的各种影响并在定时到后恢复对应的 G全局定时器,同时关闭自身的计时功能。而在G定时器控制机器加工的过程中,又需要设定启动机器,关闭机器,休眠机器等几种状态所需要经历的时间,这些经历时间又需要对应的计时器来触发。如此整个工程中总有上百个定时器

因为平时写程序都是一个线程里做的,很少涉及如此多的定时器,担心开发到后面出了问题,于是想一开始先明确思路

------解决方案--------------------
除了access,其实用sqlite可能更方便点
几千个变量可以如果有些联系,最好用面向对象组织一下,全部放在一个静态类里有点傻,除非你的逻辑代码要在这里面调用到全部变量
几百个定时器真不是什么好设计,先想一想比较好