表单构造时 get_FrameDimensionsList() 出现“参数无效”异常

gre*_*hat 7 c# exception winforms

我有一个带有 Windows 窗体的应用程序,有时会抛出“参数无效”异常。该异常是在构造时遍历自动生成的代码(由 Visual Studio 生成)时引发的。

这是一些相关的代码片段。

// MainForm.cs
public partial class MyForm : Form
{
  public MyForm(Action shutdown_request_callback = null)
  {
    Visible = false;
    ShowInTaskbar = false;
    Opacity = 0;

    InitializeComponent();
    ...
  }
}

// MainForm.designer.cs, this is auto-generated
partial class MainForm
{
  private void InitializeComponent()
  {
    ...
    this.StatusPane = new StatusPaneUserControl();
    ...
  }
}

// StatusPaneUserControl.cs
public partial class StatusPaneUserControl : UserControl
{
  public StatusPaneUserControl()
  {
    InitializeComponent();
  }
}

// StatusPaneUserConrol.designer.cs, auto generated code
partial class StatusPaneUserControl
{
  private void InitializeComponent()
  {
    this.FolderImage = new System.Windows.Forms.PictureBox();
    ...
    // 
    // FolderImage
    // 
    this.FolderImage.Image = ((System.Drawing.Image)(resources.GetObject("FolderImage.Image")));
    this.FolderImage.InitialImage = ((System.Drawing.Image)(resources.GetObject("FolderImage.InitialImage")));
    this.FolderImage.Location = new System.Drawing.Point(161, 45);
    this.FolderImage.Name = "FolderImage";
    this.FolderImage.Size = new System.Drawing.Size(251, 219);
    this.FolderImage.TabIndex = 8;
    this.FolderImage.TabStop = false;
    this.FolderImage.WaitOnLoad = true;
    ...
    this.Controls.Add(this.FolderImage);
  }
}
Run Code Online (Sandbox Code Playgroud)

“参数无效”异常是从 间接引发的Controls.Add。实际的堆栈如下。

ArgumentException: Parameter is not valid.
   at System.Drawing.Image.get_FrameDimensionsList()
   at System.Drawing.ImageAnimator.CanAnimate(Image image)
   at System.Drawing.ImageAnimator.ImageInfo..ctor(Image image)
   at System.Drawing.ImageAnimator.Animate(Image image, EventHandler onFrameChangedHandler)
   at System.Windows.Forms.PictureBox.Animate(Boolean animate)
   at System.Windows.Forms.Control.AssignParent(Control value)
   at System.Windows.Forms.Control.ControlCollection.Add(Control value)
   at MyNamespace.StatusPaneUserControl.InitializeComponent()
   at MyNamespace.MainForm.InitializeComponent()
   at MyNamespace.MainForm..ctor(Action shutdown_request_callback)
Run Code Online (Sandbox Code Playgroud)

该异常似乎来自于get_FrameDimensionsList()它似乎没有采用任何参数,这令人困惑,因为该异常似乎表明某些参数是错误的。

我在这里发现了一个类似的问题,但与 dispose 有关,它在这里看起来不适用(但有意义)。