//如果连接成功返回true 否则返回false
  public bool SmsConn()
  {
  try
  {
  string TypeStr = "";
  if (Sms_Connection(uint.Parse(AddResource.SMSPORT), 9600, out TypeStr) == 1) ///5为串口号,0为红外接口,1,2,3,...为串口
  {
  return true;
  }else {
  return false;
  }
  }catch (Exception) {
  return false;
  }
  }抛出的异常是 AcessViolationException   
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

解决方案 »

  1.   

    在试图读写受保护内存时引发的异常。
    当非托管或不安全代码试图读写未分配或不具有访问权限的内存空间时,就会产生访问冲突。这种情况通常因为指针具有错误的值而发生。并非所有通过错误指针的读写操作都会引发访问冲突,所以访问冲突通常指示已经通过错误指针进行多次读写操作,并且内存内容可能已损坏。因此,访问冲突几乎总是指示存在严重的编程错误。在 .NET Framework 2.0 版中,AccessViolationException 清楚地标识了这些错误。在完全由可验证托管代码组成的程序中,所有引用都有效或者为空,因而不会产生访问冲突。AccessViolationException 只在可验证托管代码与非托管代码或非安全托管代码交互时才会引发。版本信息
    此异常是 .NET Framework 2.0 版中新增的异常。在 .NET Framework 较早版本中,非托管代码或非安全托管代码中的访问冲突用托管代码中的 NullReferenceException 表示。当在可验证托管代码中取消空引用时,也会引发 NullReferenceException,这种情况的引发与数据损坏无关,且在 1.0 版或 1.1 版中无法区分这两种情况。管理员可以允许所选择的应用程序恢复为 .NET Framework 1.1 版的行为。将下一行置于应用程序配置文件的 <runtime> 元素 节中:<legacyNullReferenceExceptionPolicy enabled = "1"/>