0

C#4.0で構築されたウィンドウフォームアプリケーションのセットアッププロジェクトを作成しました。Vs 2010 Ultimateがインストールされ、正常に動作しているテストPCでセットアップをテストしました。

後でアプリケーションをテストするために、VSが含まれていない別のマシンをインストールしました。フォームを閉じようとするたびに、この例外が発生します。例外は、すべてではないいくつかの形式で発生しています。コードを確認しましたが、違いはありません(this.close())。

セットアップを構築している間、ターゲットフレームワークとして.NetFramework4クライアントプロファイルを使用しています。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。たとえば、Microsoft.VisualBasic.PowerPacks.Vs、Version=9.0.0.0 で .NET Reflector を使用してこのメ​​ソッドを見ると、次のように表示されます。

    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

私は、特に LineShape と同じ pblm を持っていました。適切な PowerPacksパッケージインストールと検索に頭を悩ませた後、背景色を balck とサイズに調整して RichTextBox に置き換えました。奇妙に思えますが、時間を費やすよりもはるかに優れています。このバグ!! (0_o)

于 2013-02-27T10:11:26.360 に答える