代码应用MessageQueue类的Exists方法来确定是否存在一个名为TechRepublic的私有队列。如存在,它用现有队列示例这个MessageQueue对象否则,就建立一个新队列。 新的Message对象用来向队列发送一条消息。它的Label属性指定在MSMQ控制台中显示的消息标题,其主体包含存放在队列上的项目内容。在这种情况下,我只发送文本,但您能够使用任何类型的对象。MessageQueue类的Send方法向队列发送消息。列表B中是对应的VB.NET代码。 下一步即从队列中读取消息。这是一个简单的过程,应用MessageQueue类的Receive方法即可。如果队列中存在消息,Receive方法就简尺返回一个消息对象否则,它等待一条消息出现(您可以设置一个时间期限)。从队列中恢复对象需要预先知道它的类型。 MessageQueue类的Formatter属性允许您轻松指定被恢复对象的类型。下面的简单例子仅使用文本,所以它应用System.String。在列表C中,C#代码从测试队列中读取消息。 提交给Receive方法的TimeSpan对象指定异常出现时系统的等待时间。接下来设置这个例子中的Formatter方法,对象被转换成字符串读取前面存储的文本。Receive方法从队列中读取消息,它的值显示在控制台中。在try块的最后部分,队列关闭。 轻松应用消息 MSMQ组合Windows和.NET的System.Messaging命名空间,使您可以方便地在.NET应用程序中利用消息。消息提供一种在企业应用程序中拦链高异步发送并接收消息(数据)的强大工具。
1、设置一个循环队列,先进行初始化。2、分两种情况往进送数:a,队不满时,边往进送数,边送数边累加计算,跳出后计算平均值,代码如下:
while(!(Q->front==(Q->rear+1)%Q_size))//不满的情况下,进数
{
Q->rear=(Q->rear+1)%Q_size
Q->data[Q->rear]=rand()%1000
sum+=Q->data[Q->rear]
cout<<Q->data[Q->rear]<<endl
}
ave=sum/(Q_size-1)
cout<<"The Sum is"<<sum<<endl
cout<册碧缓<"The Ave is"<州模<ave<<endl
3、满的情况下(Q->front==(Q->rear+1)%Q_size),进行如下 *** 作:
Q->front=(Q->front+1)%Q_size
x=Q->data[Q->front]//首元素出列
Q->rear=(Q->rear+1)%Q_size
Q->data[Q->rear]=rand()%1000//进新元素
4、分3种情况输出当前队列中的数据并计算平均值,慧雹因为每进一个数,由于固定队列长度的限制,当前队列的值都随之发生改变,每变一次输出一次,可以同时检验程序的正确性。
if(Q->front==Q_size-1){
for(i=0i<=Q->reari++){
cout<<Q->data[i]<<endl
sum+=Q->data[i]
}
ave=sum/(Q_size-1)
cout<<"Sum="<<sum<<endl
cout<<"Ave="<<ave<<endl
}
if(!Q->front){
for(i=(Q->front+1)%Q_sizei<=(Q_size-1)i++){
cout<<Q->data[i]<<endl
sum+=Q->data[i]
}
ave=sum/(Q_size-1)
cout<<"Sum="<<sum<<endl
cout<<"Ave="<<ave<<endl
}
else if(!(Q->front==Q_size-1)&&!(!Q->front)){
for(i=(Q->front+1)%Q_sizei<=(Q_size-1)i++){
cout<<Q->data[i]<<endl
sum+=Q->data[i]
}
for(i=0i<=Q->reari++){
cout<<Q->data[i]<<endl
sum+=Q->data[i]
}
ave=sum/(Q_size-1)
cout<<"Sum="<<sum<<endl
cout<<"Ave="<<ave<<endl
}
5、其他地方自己补充一下,该程序主要的缺点就是没有结束条件,会无限循环,但这满足不定时采样,和边采样边输出平均值的要求。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)