0

已确认的问题:由于某种未知原因,我的砖块图案按钮正在我的退出按钮中运行代码

    private void brickToolStripMenuItem_Click(object sender, EventArgs e)
    {
        //if (f2 != null) return;
        f2 = new Form2();
        f2.ShowDialog();
    }

    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        myThread.Abort();
        Close();
    }

我正在创建这个破砖游戏,它有一个用于主窗口的线程(包括桨和砖)和一个用于球运动的线程。在我的程序中,如果我单击按钮打开 form2,整个程序就会终止,因为它正在运行另一个按钮的代码。

是否有另一种打开 form2 的方法不会终止我的程序?我尝试了不同类型的 Show ShowDialog,在这种情况下,我看到了 form2 四分之一秒。然后整个程序终止。

这是我的 form1 代码的链接。http://pastebin.com/FB19qd7e Form1 设计器代码: http: //pastebin.com/RS8VZT5U

编辑:输出显示这个

mscorlib.dll 中出现“System.Threading.ThreadAbortException”类型的第一次机会异常 mscorlib.dll 中出现“System.Threading.ThreadAbortException”类型的异常,但未在用户代码中处理

好的,我有三个按钮,一个退出、暂停和砖块(打开 form2)。暂停按钮按预期工作,退出也是如此。但是,如果我单击砖块按钮,由于某种原因,它会从退出按钮运行 Thread.Abort。如果我注释掉退出按钮代码,那么砖块按钮工作得很好。

4

1 回答 1

4

看起来您已将设计器中的事件连接到Deactivate事件处理程序。Form1exitToolStripMenuItem_Click

this.Deactivate += new System.EventHandler(this.exitToolStripMenuItem_Click);

exitToolStripMenuItem_Click当您的实例Form1失去焦点时,这将调用。当您显示Form2现有实例的新实例时,Form1将不再是活动表单,这将触发对事件处理程序的调用,而事件处理程序又将调用Abort.

于 2013-04-07T14:15:03.230 回答