有人提出通过下面这个方法调用到客户端页面的javascript
但是在多线程中IHTMLDocument 就出现异常,
我现在要在多线程调用客户端页面的javascript方法
请问有没有更好的解决办法 [ComImport,Guid("00000118-0000-0000-C000-000000000046"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IOleClientSite 
    { 
        void SaveObject(); 
        void GetMoniker(uint dwAssign, uint dwWhichMoniker, object ppmk); 
        void GetContainer(out IOleContainer ppContainer); 
        void ShowObject(); 
        void OnShowWindow(bool fShow); 
        void RequestNewObjectLayout(); 
    }     [ComImport,Guid("0000011B-0000-0000-C000-000000000046"),  InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
    public interface IOleContainer 
    { 
        void EnumObjects([In, MarshalAs(UnmanagedType.U4)] int grfFlags, 
        [Out, MarshalAs(UnmanagedType.LPArray)] object[] ppenum); 
        void ParseDisplayName([In, MarshalAs(UnmanagedType.Interface)] object pbc, 
        [In, MarshalAs(UnmanagedType.BStr)] string pszDisplayName, 
        [Out, MarshalAs(UnmanagedType.LPArray)] int[] pchEaten, 
        [Out, MarshalAs(UnmanagedType.LPArray)] object[] ppmkOut); 
        void LockContainer([In, MarshalAs(UnmanagedType.I4)] int fLock); 
    } 
private void CallJavaScript(string Filenames) 
        {             Type typeIOleObject = this.GetType().GetInterface("IOleObject", true); 
            object oleClientSite = typeIOleObject.InvokeMember("GetClientSite", 
            BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public, 
            null, 
            this, 
            null);             IOleClientSite oleClientSite2 = oleClientSite as IOleClientSite; 
            IOleContainer pObj; 
            oleClientSite2.GetContainer(out pObj);             //参数数组 
          
            //获取页面的Script集合 
            IHTMLDocument pDoc2 = (IHTMLDocument)pObj; 
          Object  script = pDoc2.Script; 
            object[] args = new object[1]; 
            args[0] = Filenames;             try 
            { 
                //调用JavaScript方法OnScaned并传递参数,因为此方法可能并没有在页面中实现,所以要进行异常处理 
                script.GetType().InvokeMember("OnScaned", 
                BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public, 
                null, 
                script, 
                args); 
            } 
            catch(Exception err) { 
            
            } 
        }