解决方案 »

  1.   

     current thread is in a stack overflow state,你有用线程?貌似说线程堆栈溢出
      

  2.   

    你报错是System.Data.dll出现的异常,而substring跟这个dll一点关系都没有
    还是找找异常到底出现在哪里吧
    目测是你代码跟exe行号不一致,导致异常指向的行号错误了
    清理下解决方案,重新生成可以加个断点测试
      

  3.   


    这个代码是在Show了一个窗体出来然后执行的,没有用线程
    完整代码如下:string str = “19 Brodie Place Unit 23Braemar VillasBethlehemTauranga 3110”;
    string[] strEnter = str.Split('\n');
                    for (int g = 0; g < strEnter.Length; g++)
                    {
                        List<string> strList = CutSubstring(strEnter[g], 23, null);//换行
                    }/// <summary>
            /// 截取字符串长度分割
            /// </summary>
            /// <param name="str">判断需要分割字符串</param>
            /// <param name="strLength">设定分割长度</param>
            /// <param name="strList">分割长度字符串集合</param>
            /// <returns>分割长度字符串集合</returns>
            public static List<string> CutSubstring(string str,int strLength, List<string> strList)
            {
                if (strList == null)
                    strList = new List<string>();
                if (str.Length > strLength)//判断字符串长度是否大于设定参数长度
                {//若大于
                    string TempBeforStr = str.Substring(0, strLength);//取设定长度的字符串
                    int LastLength = TempBeforStr.LastIndexOf(' ');//取此串字符中最后一个空格的索引
                    if (LastLength < 0)//若不存在空格 则直接截取设定长度返回
                    {
                        strList.Add(TempBeforStr);
                        return strList;
                    }
                    string BeforStr = str.Substring(0, LastLength);//获取未超过长度字符串
                    strList.Add(BeforStr);
                    string AfterStr = str.Substring(LastLength);//获取超过长度之后的字符串
                    if (AfterStr.Length > strLength)//如果超过长度之后的字符串的长度仍大于设定长度,则再一次分割
                    {
                        strList = CutSubstring(AfterStr, strLength, strList);
                    }
                    else
                    {
                        strList.Add(AfterStr);
                    }
                }
                else
                {//若小于,直接返回原字符串
                    strList.Add(str);
                    return strList;
                }
                return strList;
            }
      

  4.   

    如果是
    string TempBeforStr = str.Substring(0, strLength);
    报错
    报错的时候,
    看看str和strLength到底都是什么东西