解决方案 »

  1.   

    大神们帮我看一下下面的代码有没有问题,我觉得出错应该是下面的造成的
    1线程:循环判断是否在上传数据,等到上传好了我在修改键值对
    while (_config.IsUploadIndControlState)
    {
              Thread.Sleep(100);
     }
     _config.NotVisitConvert[item] = 0;2线程:上传键值对的数据,我觉得出错可能是在循环这里,所以我特意在循环前,复制了一下副本再上传
    _config.IsUploadIndControlState = true;
    var notDev = _config.NotVisitConvert.ToDictionary(x => x.Key, x => x.Value);
    foreach (var key in notDev)
    {
           SqlCommand cmd = new SqlCommand(string.Format("exec p_NotVisitConvert {0},{1}", key.Key, key.Value), cn);
            cmd.ExecuteNonQuery();
     }
    notDev.Clear();
      _config.IsUploadIndControlState = false;
      

  2.   

     SqlCommand cmd = new SqlCommand(string.Format("exec p_NotVisitConvert {0},{1}", key.Key, key.Value), cn);
             cmd.ExecuteNonQuery();
    参数无效,估计是key.key和key.value出问题了
    把string.Format("exec p_NotVisitConvert {0},{1}", key.Key, key.Value)打印出来,瞧瞧是否都能执行
      

  3.   


    我是运行一段时间后才会出错的
    Win服务?
    建议每天定时重启win服务,否则运行一段时间会有内存泄露的问题。另外,在你的for循环里,某次执行cmd.executenonquery语句时,cn是否还处于连接状态呢?
      

  4.   


    我是运行一段时间后才会出错的
    Win服务?
    建议每天定时重启win服务,否则运行一段时间会有内存泄露的问题。另外,在你的for循环里,某次执行cmd.executenonquery语句时,cn是否还处于连接状态呢?winForm 程序,cn是链接状态,而且上面的提示,好像是在是说我的键值对有问题
      

  5.   

    每次执行记录log
    把string.Format("exec p_NotVisitConvert {0},{1}", key.Key, key.Value)记录下来
      

  6.   

    问题终于找到了,哎 ~  一直把注意力放在foreach。