注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

asp.net使用消息队列  

2012-10-10 21:53:19|  分类: asp.net |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

使用消息队列的时候需要通过控制面板 安装删除程序添加windows消息队列.不然无法使用.

 

public bool OperateDB(string sqlString, out string systemState)
        {
            bool result = false;
            systemState = "10000";
            if (!string.IsNullOrEmpty(sqlString))
            {
                try
                {
                    //设置消息队列
                    string strSMessageName = ConfigurationManager.AppSettings["SMessageName"].ToString(); //获取消息队列名次

                    if (!MessageQueue.Exists(strSMessageName)) //消息队列不存在就创建
                    {
                        MessageQueue.Create(strSMessageName);
                        MessageQueue mqTemp = new MessageQueue(strSMessageName);
                        mqTemp.SetPermissions("Everyone", MessageQueueAccessRights.FullControl);
                    }
                    MessageQueue MyQueue = new MessageQueue(strSMessageName);
                    MyQueue.Send(sqlString); //发送一个信息给消息队列
                    MyQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
                    MyQueue.ReceiveCompleted += new ReceiveCompletedEventHandler(MyReceiveCompleted);
                    MyQueue.BeginReceive();
                    result = true;
                    systemState = "10001";
                }
                catch (Exception)
                {
                    systemState = "10005";
                }

            }
            return result;
        }

        private void MyReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncResult)
        {
            MessageQueue mq = (MessageQueue)source;
            string sqlString = "";
            SqlConnection sqlConn = null;
            SqlCommand sqlComm = null;
            try
            {
                Message ms = mq.EndReceive(asyncResult.AsyncResult);
                sqlString = (string)ms.Body;
                //SQL语句处理
                //创建连接对象
                sqlConn = DBFactory.Instance.DBConnection;
                sqlConn.Open();
                sqlComm = new SqlCommand(sqlString);
                sqlComm.Connection = sqlConn;
                int count = sqlComm.ExecuteNonQuery();

            }
            catch (Exception exp)
            {
                AppLog.Write("SQL(" + sqlString + ")执行出现异常:", AppLog.LogMessageType.Fatal, exp);
            }
            finally
            {
                sqlConn.Close();
                sqlComm = null;
                GC.Collect();
                mq.BeginReceive();
            }
            return;
        }
        #endregion


转载:http://www.cnblogs.com/xcanel/archive/2011/07/29/2120840.html

  评论这张
 
阅读(431)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017