C#类实例

时间:2011-04-23 19:14:13

标签: c# events class

我是编程的初学者,我已经阅读了几个教程。我仍然不清楚以下内容:

单击某个按钮时,该事件会创建一个类的实例:

private void button2_Click(object sender, RoutedEventArgs e)
{
    int a = 1;
    myClass test = new myClass(a);
}

myClass正在做一个很长的处理工作(几分钟)。如果我在按钮上单击5次,是否会创建5个实例?或者“测试”将被“覆盖”4次?

由于

2 个答案:

答案 0 :(得分:8)

  

如果我在按钮上单击5次,是吗?   要创建5个实例?或者   “test”实例将被“覆盖”   4次?

是的,它将创建5个单独的实例。您正在创建一个在构造之后立即超出范围的对象,因此下次构造同一个类的不同实例时。

我假设您计划将处理作为构造函数的一部分,请记住这将阻止UI线程,您的程序将“冻结” - 如果您希望执行长时间的处理工作,则不应该在UI线程上进行 - 查看即BackgroundWorker

答案 1 :(得分:3)

它会创建您单击的许多实例。但是,如果工作是同步的并阻止UI线程,则在工作完成之前无法再次单击它。如果您的工作是异步的,那么每次点击都会创建一个新实例。

相反尝试......

private myClass _test;
private void button2_Click(object sender, RoutedEventArgs e)
{
    int a = 1;

    if (_test == null)
    {
        _test = new myClass(a);
    }
}

虽然,我不建议在UI线程上进行同步工作。