ASP.NET网页编程之C#多线程-分歧线程之间经由过程事务托付封送...
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。多线程 前两天做了一个自界说单件Timer,该Timer可以依据响应数据纪录(Row)中的纪录ID和设定分钟Minutes做响应的事务挪用,可是假如此事务处置程序在一Form中时则不克不及准确挪用它,可是把82到93行的正文往失落就能够了。Timer大致界说以下:
1usingSystem;
2usingSystem.Threading;
3usingSystem.ComponentModel;
4usingSystem.Windows.Forms;
5
6/************************************************************
7*MyTimer.Timer可以依据统一Timer准时基准对分歧的准时事务做准时。
8*
9*MyTimer.Timer包括一Hashtable和Threading.Timer,每次Timer准时回调
10*遍历Hashtable并依据个中的TimerNode的准时周期值是不是为零来判别是不是挪用
11*响应的TimerCome事务。
12*************************************************************/
13namespaceMyTimer
14{
15///<summary>
16///事务准时节点
17///</summary>
18internalclassTimerNode
19{
20///<summary>
21///机关函数
22///</summary>
23///<paramname="TimeCount">准时周期数</param>
24///<paramname="EvtID">事务ID</param>
25publicTimerNode(longTimeCount,objectEvtID)
26{
27this.mTimeCount=TimeCount;
28this.mEvtID=EvtID;
29}
30privatelongmTimeCount;
31privateobjectmEvtID;
32
33publiclongTimeCount
34{
35get{returnmTimeCount;}
36set{mTimeCount=value;}
37}
38publicobjectEvtID
39{
40get{returnmEvtID;}
41}
42}
43
44publicclassTimerEventArgs:EventArgs
45{
46privateSystem.Collections.ArrayListmEvtIDs;
47publicSystem.Collections.ArrayListEvtIDs
48{
49get{returnmEvtIDs;}
50}
51
52///<summary>
53///机关
54///</summary>
55///<paramname="EvtIDs">触发的事务ID列表</param>
56publicTimerEventArgs(System.Collections.ArrayListEvtIDs):base()
57{
58this.mEvtIDs=EvtIDs;
59}
60}
61
62publicdelegatevoidTimerEventHandler(TimerEventArgse);
63
64///<summary>
65///Timer单件形式,不克不及实例化。
66///</summary>
67publicclassTimer
68{
69///<summary>
70///有节点准时到事务
71///</summary>
72publicstaticeventTimerEventHandlerTimeCome;
73
74///<summary>
75///叫醒TimeCome事务。
76///</summary>
77///<paramname="e">此参数包括准时到事务列表</param>
78staticvoidRaiseTimeCome(TimerEventArgse)
79{
80if(TimeCome!=null)
81{
82//if(TimeCome.TargetisSystem.ComponentModel.ISynchronizeInvoke)
83//{
84//System.ComponentModel.ISynchronizeInvokeaSynch=TimeCome.TargetasSystem.ComponentModel.ISynchronizeInvoke;
85//if(aSynch.InvokeRequired)
86//{
87//object[]args=newobject{e};
88//aSynch.BeginInvoke(TimeCome,args);
89//}
90//else
91//TimeCome(e);
92//}
93//else
94TimeCome(e);
95}
96}
97staticreadonlylongmPeriod=1000*60;//准时距离1分钟。
98staticSystem.Threading.TimermTimer;
99staticTimer()
100{
101mTimer=newSystem.Threading.Timer(newTimerCallback(TimeArrive),null,Timeout.Infinite,mPeriod);
102}
103
104///<summary>
105///准时器入手下手运转
106///</summary>
107publicstaticvoidRun()
108{
109mTimer.Change(0,mPeriod);
110}
111
112///<summary>
113///准时器中断。
114///</summary>
115publicstaticvoidStop()
116{
117mTimer.Change(Timeout.Infinite,mPeriod);
118}
119
120///<summary>
121///到场准时事务,假如此准时事务已存在则修正其准时周期。
122///</summary>
123///<paramname="EvtID">事务ID</param>
124///<paramname="TimeCount">周期数</param>
125publicstaticvoidAdd(objectEvtID,longTimeCount)
126{
127if(mTimerNodes.ContainsKey(EvtID))
128{
129((TimerNode)mTimerNodes).TimeCount=TimeCount;
130}
131else
132mTimerNodes.Add(EvtID,newTimerNode(TimeCount,EvtID));
133}
134
135///<summary>
136///移除此准时事务
137///</summary>
138///<paramname="EvtID">事务ID</param>
139publicstaticvoidRemove(objectEvtID)
140{
141if(mTimerNodes.ContainsKey(EvtID))
142mTimerNodes.Remove(EvtID);
143}
144
145///<summary>
146///此函数是基准准时器mTimer的回调函数,
147///在此函数中将反省事务表,准期事务准时周期数已到则将其到场事务参数中
148///并叫醒事务。
149///</summary>
150///<paramname="state"></param>
151staticvoidTimeArrive(objectstate)
152{
153System.Collections.ArrayListEvtIDs=newSystem.Collections.ArrayList();
154foreach(TimerNodeaNodeinmTimerNodes.Values)
155{
156aNode.TimeCount--;
157if(aNode.TimeCount<=0)
158{
159EvtIDs.Add(aNode.EvtID);
160}
161}
162if(EvtIDs.Count>0)
163{
164for(inti=0;i<EvtIDs.Count;i++)
165{
166mTimerNodes.Remove(EvtIDs);
167}
168RaiseTimeCome(newTimerEventArgs(EvtIDs));
169}
170}
171
172///<summary>
173///事务表
174///</summary>
175staticSystem.Collections.HashtablemTimerNodes=newSystem.Collections.Hashtable();
176}
177
178
179}
180
我认为,可以通过更加简单的首次编译,而增加第二次编译的负担,来提高java的运行效率。只是将java源代码进行简单的等价转换,而不假设编译成某种虚拟机器的目标格式,而由本地编译器针对性的二次编译。 JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。 ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
页:
[1]