qeilf
博客园
首页
新随笔
联系
订阅
管理
11 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks
公告
昵称:
chen lei
园龄:
6年
粉丝:
0
关注:
0
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
VS2005
(1)
随笔分类
Log4Net学习
随笔档案
2011年9月 (1)
2010年11月 (1)
2008年10月 (1)
2007年8月 (1)
2006年5月 (1)
2006年2月 (6)
最新评论
阅读排行榜
评论排行榜
推荐排行榜
.Net消息队列学习(一)
.Net消息队列学习(一)
下面的示例只是涉及到构建发送者,发送复杂消息等操作。这里的复杂消息包括两种,一种是作者自己封装的一个类,获取对话框中的几个文本对话框的值。第二种是Net中自带的类Message,t填充他的几个属性,代码如下:
private
System.Messaging.Message setMessage()
{
System.Messaging.Message msg
=
new
System.Messaging.Message();
msg.Label
=
"
A message lable
"
;
msg.Body
=
"
The message body
"
;
msg.TimeToBeReceived
=
TimeSpan.FromSeconds(
4000
);
msg.UseDeadLetterQueue
=
true
;
return
msg;
}
private
void
button1_Click(
object
sender, System.EventArgs e)
{
MessageQueue mq;
SendForm form
=
new
SendForm();
if
(
!
MessageQueue.Exists(
@"
.\private$\chelei
"
))
{
try
{
mq
=
MessageQueue.Create(
@"
.\private$\chelei
"
);
form.Name
=
this
.txtname.Text;
form.Sex
=
this
.txtsex.Text;
form.Email
=
this
.txtemail.Text;
form.Address
=
this
.txtaddress.Text;
mq.Send(form,
"
信息
"
);
mq.Close();
MessageQueue.Delete(
@"
.\private$\chenlei
"
);
}
catch
(Exception ex)
{
MessageBox.Show(ex.Message,
"
Warning!
"
);
//
}
}
else
{
try
{
mq
=
new
MessageQueue(
@"
.\private$\chenlei
"
);
form.Name
=
this
.txtname.Text;
form.Sex
=
this
.txtsex.Text;
form.Email
=
this
.txtemail.Text;
form.Address
=
this
.txtaddress.Text;
mq.Send(form,
"
信息
"
);
mq.Close();
MessageQueue.Delete(
@"
.\private$\chenlei
"
);
}
catch
(Exception ex)
{
MessageBox.Show(ex.Message,
"
Warning!
"
);
}
}
}
private
void
button1_Click_1(
object
sender, System.EventArgs e)
{
try
{
MessageQueue mq;
if
(MessageQueue.Exists(
@"
.\private$\aa
"
))
{
mq
=
new
MessageQueue(
@"
.\private$\aa
"
);
mq.Send(
this
.setMessage());
}
else
{
mq
=
MessageQueue.Create(
@"
.\private$\aa
"
);
mq.Send(
this
.setMessage());
}
mq.Close();
MessageQueue.Delete(
@"
.\private$\aa
"
);
}
catch
(Exception ex)
{
MessageBox.Show(ex.Message,
"
Warning!
"
);
}
}
}
说明:
1、通过设置TimeToBeReceived属性,这个消息可以在目标队列中保存20秒。
如果没有在20秒内从这个队列中读取他,队列就会删除这条消息。
设置UseDeadLetter属性为true可以通知MSMQ在把它从目标队列中删除之前,把消息复制到"Dead-letter messages"系统队列中
2、只有在发送消息的计算机在域模式下运行MSMQ时,才可以使用简单路径引用网络上的公共消息队列
私有队列路径表示:.\private$\aa
公共队列路径表示:.\aa
3、具体的SendForm类如下:
public
class
SendForm
{
private
string
m_Name;
private
string
m_Sex;
private
string
m_Email;
private
string
m_Address;
public
SendForm()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
public
SendForm(
string
name,
string
sex,
string
email,
string
address)
{
this
.m_Name
=
name;
this
.m_Sex
=
sex;
this
.m_Email
=
email;
this
.m_Address
=
address;
}
public
string
Name
{
get
{
return
this
.m_Name;
}
set
{
this
.m_Name
=
value;
}
}
public
string
Sex
{
get
{
return
this
.m_Sex;
}
set
{
this
.m_Sex
=
value;
}
}
public
string
Email
{
get
{
return
this
.m_Email;
}
set
{
this
.m_Email
=
value;
}
}
public
string
Address
{
get
{
return
this
.m_Address;
}
set
{
this
.m_Address
=
value;
}
}
}
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted on 2006-02-04 16:32
chen lei
阅读(3052)
评论(2)
编辑
收藏
评论
1745207
#1楼
2006-08-15 15:30
55[未注册用户]
sdsdsds
回复
引用
#2楼
2010-01-12 15:45
WangKai
学习啦
回复
引用
查看
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
美国空军拟最多购买1.8万台iPad 2
·
伊朗封杀Gmail和Facebook等互联网服务
·
分析称专利之争让谷歌苹果两败俱伤
·
Android平台发现新型手机病毒Rootsmart
·
HTC首款Android4.0手机大曝光
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
Powered by:
博客园
Copyright © chen lei