none
MS2008C#编写的DLL形式的OCX控件嵌入在IE中,按F5刷新后无法正常初始化 RRS feed

  • 问题

  • 我在MS2008C#下编写了一个OCX(编译后为DLL文件),该DLL主要任务是与服务端建立Socket通讯,并与IE进行交互(IE调用OCX的方法,OCX调用IE对应的JS方法)。

    用户正常退出没有问题。

    如果用户按F5进行刷新,结果OCX无法正常初始化,主要是包含与服务端建立Socket连接;

    另外一个问题是,调用JS的方法也有异常出现。

    我在OCX的Dispose()方法里进行了监听线程的关闭和Socket断开。 

     

    请各位帮忙。多谢了。

    2010年4月14日 9:29

全部回复

  • 补充一下我的Dispose方法:

    protected override void Dispose ( bool disposing )
            {
                try
                {
                    //关闭监听线程
                    if ( thread != null )
                    {
                        thread . Join ( 0 );
                        thread . Abort ( );
                        thread = null;
                    }

                    //关闭Socket连接
                    if ( socket != null )
                    {
                        LingerOption lingerOption = new LingerOption ( false , 1 );
                        socket . SetSocketOption ( SocketOptionLevel . Socket , SocketOptionName . Linger , lingerOption );
                        socket . Close ( );
                        socket = null;
                    }

                    bRunning = false;
                }
                catch//(SocketException e)
                {
                }
                if ( disposing && ( components != null ) )
                {
                    components.Dispose ( );
                }
                base.Dispose ( disposing );
            }

    2010年4月14日 9:34