【问题标题】:Exception in WCF clientWCF 客户端中的异常
【发布时间】:2010-02-19 11:05:39
【问题描述】:

我在我的 windowsApplication 中使用 WCf 服务...我在客户端中遇到异常当我尝试使用 ForEach 循环在列表框中添加项目时...异常是“集合已修改枚举可能无法执行”。 我该如何解决这个异常......

我的代码是,

            foreach (ClsPC pc in iclsobj.GetPC())
            {
            if (listBox1.Items.Count == 0)
            {
            listBox1.Items.Add(pc.IPAddress);
             }
            else
            {
            for (int i = 0; i < listBox1.Items.Count; i++)
            {
            if (!listBox1.Items[i].ToString().Contains(pc.IPAddress))
            {
            listBox1.Items.Add(pc.IPAddress);
             }
          }
        }
       }
 client.Close();

客户=空;

}

【问题讨论】:

    标签: c# for-loop


    【解决方案1】:

    您正在尝试修改列表框中的集合,同时循环通过它(内部循环),这并不是一个真正的热门想法。您最好在数据选择中执行此操作(即获取不同的 PC),或限制返回的列表,可能类似于:

    var pcs = iclsobj.GetPC().Select(pc => new { IPAddress = pc.IPAddress}).Distinct();
    

    然后将你的列表框绑定到这个。

    【讨论】:

    • 感谢您的代码....我尝试了您的代码,但我得到了不同的行...(即)System.Linq.Enumerable+d__7a1[&lt;&gt;f__AnonymousType01[System.String]]现在我怎样才能得到那个 IPAddress
    • 我无法完全理解您的第一条评论中的文字,但至于第二条,就像您将任何可枚举添加到集合中一样简单。就个人而言,我会将您的过滤列表设置为数据源,然后调用 databind...
    • 书在这个阶段可能不是一个坏主意... lstBox1.DataSource = pcs; lstBox1.DataBind();
    • 我无法获得 lstbox1.Databinding() 选项... lstbox1 不包含 DataBinding 功能...
    • 我使用了 windowsforms,所以我无法获得 Databind() 函数...现在告诉我一件事,我必须将 IPlist 作为 List 而不是 Var...我该怎么办这个?
    猜你喜欢
    • 1970-01-01
    • 2011-04-18
    • 2014-10-19
    • 2011-07-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多