public class OperateNet
    {
       .........
       .........     
        public void EndServer()
        {
            if (this._thread != null && this._thread.IsAlive)
            {                try { this._thread.Abort(); }
                catch  (Exception exce)
                {
                   //由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值                }
            }
            if (this._socket != null)
            {
                this._socket.Shutdown(System.Net.Sockets.SocketShutdown.Both);
                this._socket.Close();
            }            if (this._ns != null)
            {
                this._ns.Close();
            }
            this._disposeSocketHandler = null;
            this._receiveHandler = null;            this._device = null;        }
        #endregion    }
public void Main()
{
   OperateNet op=new OperateNet()
   op.StartServer()//启动服务
   op.EndServer()  //中止服务,出现异常。
}
出现这个异常。由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值           
有谁遇到 过,如何解决呀?急

解决方案 »

  1.   

    如果把TRY去掉了,程序会出现其他情况。
      

  2.   

    http://blog.csdn.net/lsjwq/archive/2008/08/28/2843275.aspx 非常规的解决办法
    这是问题的解决办法,但是我想找到具体的原因
      

  3.   

    原因:是因为你的那个线程还在运行中.如线程里有            
    while (true)
    {
    .....
    }
    而其中正好有正处于侦听的Socket所以...
    最重要的是你写的 this._thread.Abort(); 是不是在当前窗口.我前几天也正好也出现了这个问题.
    现在解决了.我是在窗口运行protected override void Dispose(bool disposing)之前
    在private void Form_FormClosed(object sender, FormClosedEventArgs e)
    {
        socket.Close();
        mythread.Abort();
    }
      

  4.   

    我现在在导出excle之后提示客户端保存时也出现了这个问题