c #windows窗体无法响应点击操作

时间:2011-06-09 23:30:14

标签: c# backgroundworker

我有一个WindowsForm项目正在运行两个BackgroundWorker对象,用于测试是否应该收集数据以及收集数据。这些似乎运行正常,但是当我添加功能以查看收集的数据时,表单会在尝试绘制可用数据时冻结。

单击第一个按钮时,数据将列在带有列表框的新窗体窗口中。在这个新窗口中,我有另一个按钮,用于绘制数据,如果它似乎没问题。

这是整个项目冻结的地方。我试过而不是软复制我传递给新表单的类引用,在构造函数中创建一个新对象。只要数据收集BackgroundWorker没有运行,它似乎工作正常。当集合发生时,单击绘图按钮冻结表单,数据显示按钮工作正常。

private void wellStatusButton1_Click(object sender, EventArgs e)
{
     try
     {
        ListDataForm temp = new ListDataForm(tubes[0], 1);
        temp.ShowDialog();
     }
     catch (Exception ex)
     {
        MessageBox.Show(ex.Message);
     }
  }

private void plotDataButton_Click(object sender, EventArgs e)
{
     try
     {
        GraphForm plotData = new GraphForm(at);
        plotData.ShowDialog();
     }
     catch (Exception ex)
     {
        MessageBox.Show(ex.Message);
     }
}

1 个答案:

答案 0 :(得分:0)

很难从你的问题中获得太多信息,但有一件事可能对你有用:当一个Windows程序在后台做其他事情时,通常UI可能会被冻结。您可以定期尝试使用:Application.DoEvents(),这将使UI看起来更具响应性。