程序调试时可以正常执行指定的操作,直接运行时则不行,求助

far-away-wind 2013-02-25 10:41:23
程序调试时可以正常执行指定的操作,直接运行时则不行,求助

我想让程序在收到数据后插入数据库或者写入XML,在调试中设置断点,每次都能命中,都能成功写入
但是每次直接运行时就不能写入

这是什么奇葩问题啊,求助!
谢谢各位
...全文
447 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
far-away-wind 2013-02-25
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
调试时和运行时是有区别的,特别是一些对象的释放,调试即使出了作用域,但是仍可以使用,运行时不行
代码是这样的

private static string insertStr = "";
        private static string usingStr = "";
        private static string RealName = "";
        private static void DataReceviedHandler(
                        object sender,
                        SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            string indata = sp.ReadExisting();
            insertStr += indata;

            if (insertStr.Length > 12)
            {
                string insertStr2 = insertStr.Split('o')[0];
                insertStr = insertStr2;
            }

            foreach (char ch in insertStr)
            {
                if (ch != 'E' && ch != 'S'&& ch != 'o')
                {
                    usingStr += ch;
                }
            }
            
            switch (usingStr)
            {
                case "2011072069\0":
                    RealName = "a";
                    break;
                case "2010073065\0":
                    RealName = "b";
                    break;
                default:
                    break;
            }

            if (RealName != "")
            {
                if (insertStr.Contains("E"))
                {
                    string Sqlcom = "INSERT INTO tb_out(RealName, Num, Date) VALUES('" + RealName + "'," + "'" + usingStr + "', GetDate());";
                    ExecuteSQL(Sqlcom);
                    usingStr = string.Empty;
                    insertStr = string.Empty;
                    RealName = string.Empty;
                }
                if (insertStr.Contains("S"))
                {
                    string Sqlcom = "INSERT INTO tb_in(RealName, Num, Date) VALUES('" + RealName + "'," + "'" + usingStr + "', GetDate());";
                    ExecuteSQL(Sqlcom);
                    usingStr = string.Empty;
                    insertStr = string.Empty;
                    RealName = string.Empty;
                }
            }
            
        }

        public static void ExecuteSQL(string SQLwords)
        {
            //执行插入、删除、更新的函数
            string myConStr = "user id=sa; password=sa;";
            myConStr += "Initial Catalog = AccessControl; Server=PC2012050719LFQ;";
            //myConStr += "Connect Timeout = 10";

            SqlConnection myCon = new SqlConnection(myConStr);
            myCon.Open();
            SqlCommand myCom = new SqlCommand();
            myCom.CommandType = CommandType.Text;
            myCom.CommandText = SQLwords;
            myCom.Connection = myCon;
            try
            {
                myCom.ExecuteNonQuery();
            }
            catch
            {
            }
            myCon.Close();
        }
far-away-wind 2013-02-25
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
调试时和运行时是有区别的,特别是一些对象的释放,调试即使出了作用域,但是仍可以使用,运行时不行
那请问应该怎么找程序的问题
bdmh 2013-02-25
  • 打赏
  • 举报
回复
调试时和运行时是有区别的,特别是一些对象的释放,调试即使出了作用域,但是仍可以使用,运行时不行
far-away-wind 2013-02-25
  • 打赏
  • 举报
回复
重写程序后解决问题了
jimh 2013-02-25
  • 打赏
  • 举报
回复
重来没看过这么垃圾的接受代码,每次长度大于12就处理,吧“o”字母后的通通截断,如果条记录刚好发送了一半,那样也被砍掉了,调试时没问题那只能说调试时速度慢了一点,撞了狗屎运,刚好能处理到。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧