首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#做的ActiveX多线程回调JS的一些有关问题

2013-07-20 
C#做的ActiveX多线程回调JS的一些问题由于项目需要一个读写IC卡的功能故要做一个ActiveX嵌入网页供客户使

C#做的ActiveX多线程回调JS的一些问题
由于项目需要一个读写IC卡的功能故要做一个ActiveX嵌入网页供客户使用,其实之前已经交付给客户使用了,不过近期由于功能变动,需要添加一些其他功能。现在遇到了一个在多线程下回调页面JS的问题:在页面通过JS调用ActiveX里面的一个多线程方法,等处理完得到结果后回调页面JS。但是通过测试发现在不用多线程的情况下,可以正常回调页面JS,一旦开启多线程就无法正常回调页面JS。
经调试发现,在页面调用ActiveX方法的时候,传进来的HTMLWindow2出现异常:
C#做的ActiveX多线程回调JS的一些有关问题
注:由于是在之前代码的基础上做的修改故不存在ActiveX有问题的情况。
话不多说,上代码:


using mshtml;        
HTMLWindow2 html = null;
CmdControl cmd = null;
Thread work = null;
string JsName = string.Empty;
        public class1()
        {
            cmd = new CmdControl();
            cmd.EvtResult += new DltResultCallBack(CallBack);
        }
        public void GetInfo(object obj, string jsname)
        {
            work = new Thread(new ThreadStart(() =>
            {
                html = (HTMLWindow2)obj;
                JsName = jsname;
                cmd.GetUserInfo(out hr);
            }));
            work.Start();
        }
        //这里得到多线程处理后的结果
        private void CallBack(string result)
        {
           if (html != null)
           {
               string a = string.Format("{0}('{1}')", JsName, result);
               html.execScript(a, "javascript");
           }
        }

刚刚接触用C#写ActiveX,很多问题需要请教各位大大指点

C# activex 多线程 JavaScript
[解决办法]
SetApartmentState
[解决办法]
转到主线程再触发事件

热点排行