0

我创建了一个用 C# 4.0 构建的窗口窗体应用程序的安装项目。我在安装了 Vs 2010 Ultimate 的测试 PC 中测试了设置,并且在其中运行良好。

后来我测试了应用程序,我将它安装在另一台没有 VS 的机器上。每次我尝试关闭表单时,都会出现此异常。例外情况以某些形式发生,并非全部发生。我检查了代码并且没有区别(this.close())。

在构建设置时,我使用 .Net Framework 4 Client Profile 作为目标框架。Microsoft.VisualBasic.PowerPacks.Vs 在安装程序中添加。我没有使用标签条,也没有尝试关闭多个表单。

这是您的应用程序中发生了未处理的异常的完整错误。如果单击继续,应用程序将忽略此错误并尝试继续。如果单击退出,应用程序将立即关闭。

有关调用即时 (JIT) 调试而不是此对话框的详细信息,请参阅此消息的末尾。

************** Exception Text **************
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
   at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
   at System.Collections.Generic.List`1.Enumerator.MoveNext()
   at Microsoft.VisualBasic.PowerPacks.ShapeCollection.Dispose(Boolean disposing)
   at Microsoft.VisualBasic.PowerPacks.ShapeContainer.Dispose(Boolean disposing)
   at System.ComponentModel.Component.Dispose()
   at System.Windows.Forms.Control.Dispose(Boolean disposing)
   at System.ComponentModel.Component.Dispose()
   at System.Windows.Forms.Control.Dispose(Boolean disposing)
   at System.ComponentModel.Component.Dispose()
   at System.Windows.Forms.Control.Dispose(Boolean disposing)
   at System.Windows.Forms.Form.Dispose(Boolean disposing)
   at ezyBizManager.Masters.frmUsers.Dispose(Boolean disposing)
   at System.ComponentModel.Component.Dispose()
   at System.Windows.Forms.Form.WmClose(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
ezyBizManager
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Program%20Files/Microsoft/COE/ezyBizManager.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Data.Linq
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.Linq/v4.0_4.0.0.0__b77a5c561934e089/System.Data.Linq.dll
----------------------------------------
System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Configuration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Data
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Transactions
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
System.Xml.Linq
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml.Linq/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll
----------------------------------------
Anonymously Hosted DynamicMethods Assembly
    Assembly Version: 0.0.0.0
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/mscorlib/v4.0_4.0.0.0__b77a5c561934e089/mscorlib.dll
----------------------------------------
Microsoft.VisualBasic.PowerPacks.Vs
    Assembly Version: 10.0.0.0
    Win32 Version: 10.0.20911.1
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic.PowerPacks.Vs/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.PowerPacks.Vs.dll
----------------------------------------
Microsoft.VisualBasic
    Assembly Version: 10.0.0.0
    Win32 Version: 10.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------************** JIT Debugging **************

要启用即时 (JIT) 调试,此应用程序或计算机的 .config 文件 (machine.config) 必须在 system.windows.forms 部分中设置 jitDebugging 值。还必须在启用调试的情况下编译应用程序。

例如:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

启用 JIT 调试后,任何未处理的异常都将发送到计算机上注册的 JIT 调试器,而不是由该对话框处理。

[编辑:]我正在使用图像来关闭表单。

private void imgClose_Click(object sender, EventArgs e)
{
    this.Close();
}
4

3 回答 3

4

我认为这Dispose()ShapeCollection. 如果我使用例如 .NET Reflector、Microsoft.VisualBasic.PowerPacks.Vs、Version=9.0.0.0 来查看此方法,它会说:

    foreach (Shape shape in this.m_Shapes)
    {
        shape.Dispose();
    }

如果我使用 Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0 查看这个方法,它会说:

    for (int i = this.m_Shapes.Count - 1; i >= 0; i--)
    {
        this.m_Shapes[i].Dispose();
    }

显然,实现在不同版本之间发生了演变。后者不依赖于 Enumerator 对象,因此不会因您显示的错误而失败。

奇怪的是你的堆栈帧似乎暗示你正在运行版本 10,它不应该使用枚举器?也许您需要 VS 2010 更新?或者,您也可以查看您正在使用的 Microsoft.VisualBasic.PowerPacks.Vs 上的 Dispose 实现。

编辑:经过一番挖掘,您的应用程序确实在旧版本的 VB Powerpacks 上运行。升级到 VS2010、SP1 或从良好的安装中复制 DLL。对于这个特定的 Dispose 错误,您至少需要 10.0.30319.1。

于 2013-02-09T14:18:22.840 回答
1

我有同样的问题。我一直很困惑是什么导致了这个问题,并且已经逐行调试了一天左右。在谷歌搜索并输入正确的描述后,问题在于表格上的线条形状——可能还有其他形状。请参阅此处的链接,希望它可以节省其他人一些时间...您必须仔细阅读评论,就像上面的帖子一样,它带有线条形状。

http://social.msdn.microsoft.com/Forums/en-US/cb89a159-c989-470f-b74f-df3f61b9dedd/systeminvalidoperationexception-when-closing-a-form?forum=vbpowerpacks

http://channel9.msdn.com/forums/TechOff/520076-VB-2010-Error-PowerPacks-Line-Shape-Dispose/

于 2014-08-27T01:53:44.483 回答
1

我有相同的 pblm ,尤其是LineShape,在安装和搜索正确的PowerPacks包感到头疼之后,我通过将背景色调整为黑色和大小将其替换为 RichTextBox ,这看起来很奇怪,但这对我来说比花时间更好这个错误!(0_o)

于 2013-02-27T10:11:26.360 回答