我做的是cs程序,程序录制视频,录制失败就给值班人员发短信,程序中使用了WebBrowser控件。
程序开始运行没有问题,但运行一段时间就不行了,日志如下
2009-11-17 11/17/2009 07:28:16 
Timer.MyTimerCallback => MainFrom.RunTimeingClose => MainFrom.IsWinRec
message:E:\TESTTV\20091117gj.rm文件录制失败
错误描述:System.Runtime.InteropServices.COMException (0x800700AA): 请求的资源在使用中。 (异常来自 HRESULT:0x800700AA)
   在 System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.Navigate2(Object& URL, Object& flags, Object& targetFrameName, Object& postData, Object& headers)
   在 System.Windows.Forms.WebBrowser.PerformNavigate2(Object& URL, Object& flags, Object& targetFrameName, Object& postData, Object& headers)
   在 System.Windows.Forms.WebBrowser.PerformNavigateHelper(String urlString, Boolean newWindow, String targetFrameName, Byte[] postData, String headers)
   在 System.Windows.Forms.WebBrowser.Navigate(String urlString)
   在 Calendar.MainFrom.SendSmsRec()
   在 Calendar.MainFrom.IsWinRec(String filename, String fid)
此问题该如何解决?

解决方案 »

  1.   

    检查下这两个方法中的代码Calendar.MainFrom.SendSmsRec
    Calendar.MainFrom.IsWinRec
      

  2.   

    如果代码中使用了thread的话,操作资源时记得lock
      

  3.   

            private void SendSmsRec(string fileName)
            {
                if (modelConfig.IsShotMsg) //开短信发送
                {
                    if (perList.Count == 0)
                        return;
                    foreach (Person p in perList)
                    {
                        string content = "值班员 " + p.Name + ":你好! " + fileName + " 录制失败!本消息来自视频采集任务管理系统(" + DateTime.Now + ")请做好值班工作,信息化办公室发";
                        string address = "http://" + modelConfig.ShotMsgHost + "/sms/smsSendInterface.do?tel=" + p.Tel + "&userName=VideoCap&userPass=capvideo&content=" + content;
                        if (String.IsNullOrEmpty(address)) return;
                        if (address.Equals("about:blank")) return;
                        if (!address.StartsWith("http://")) address = "http://" + address;
                        try
                        {
                            webBrowser1.Navigate("about:blank");
                            webBrowser1.Navigate(new Uri(address));
                        }
                        catch (System.UriFormatException ex)
                        {
                            log.Error("文件录制失败\r\n错误描述:" + ex);
                            return;
                        }
                    }
                }
            }
    这是发送短信的代码,大家看看
      

  4.   

    person 是自定义的类,在代码中访问的公共资源有personlist,modelConfig,需要都锁定吗?
      

  5.   

    我该锁定那一个personlist,modelConfig还是webBrowser1?