数组上的 C# OutOfMemoryException

标签 c# wcf web-services

我是 C# 的新手,现在我完全沉迷于这个函数。 任何帮助将不胜感激。

我在 mess.Add(firstname); 上遇到了 OutOfMemoryException 我很确定这是因为阵列故障,但我似乎无法让它工作。

谁能指导我正确的方法?

到目前为止,这是我的代码:

 public List<string> SelectEmployee(string pkrelation)
        {
        SDKRecordset inboundSet = IQSDK.CreateRecordset("R_CONTACT", "", "FK_RELATION = " + pkrelation, "");
        inboundSet.MoveFirst();
        string person = inboundSet.Fields["FK_PERSON"].Value.ToString();
        messages.Add(person);

        inboundSet.MoveNext();
        SDKRecordset inboundSet2 = IQSDK.CreateRecordset("R_PERSON", "", "PK_R_PERSON = " + person, "");


        if (inboundSet2 != null && inboundSet2.RecordCount > 0)
        {
            inboundSet2.MoveFirst();              

            do
            {
                string firstname = inboundSet2.Fields["FIRSTNAME"].Value.ToString();
                mess.Add(firstname);

                inboundSet.MoveNext();
            }
            while (!inboundSet2.EOF);
            return mess;


        }

        messages.Add("Error, didn't work.");
        return messages;// null;

最佳答案

你打错了。您不小心使用了 inboundSet.MoveNext(),因此您的 inboundSet2.EOF 永远不会设置为 false,因为您实际上从未遍历过它。这会导致无限循环,最终会触发 OutOfMemoryException

do
{
    string firstname = inboundSet2.Fields["FIRSTNAME"].Value.ToString();
    mess.Add(firstname);

    inboundSet.MoveNext(); // This needs to be inboundSet2!
}
while(!inboundSet2.EOF) //EOF never becomes true causing an infinite loop

关于数组上的 C# OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17298073/

相关文章:

c# - 在运行时 .NET 核心应用程序中停止执行的异常 : System. Data.SqlClient.SqlException : 'Incorrect syntax near the keyword ' GROUP'. '

c# - 从模式中的部分获取数据元素,用Javascript设置父级中文本框的值?

java - 如何在调用 Java Web 服务之前检查它是否已启动并在 PL/SQL 中运行

wcf - 可以将 WCF 日志记录配置为使用 shell 文件夹路径吗?

c# - 如何从 WCF 服务返回图像?

c# - 我怎样才能得到这个 XML 结构

web-services - 从Grails请求wsdl文件时出错

C# Httpclient FormUrlEncodedContent 编码

c# - 如何从 aspx.cs 获取参数到 javascript

c# - 为什么我会收到异常 "Consider using a DataContractResolver or add any types not known statically to the list of known types"