当后台线程访问文本框时,窗体会关闭

时间:2016-11-10 12:01:25

标签: .net multithreading winforms

后台线程需要更新表单上的标签。它会生成一个事件。事件处理程序看起来像这样

    void ShowResults(object sender,EventArgs e)
    {
        ....
        SetText( results.ToString() );
    }
    delegate void SetTextCallback(string text);
    private void SetText(string text)
    {
         if (this.resultsLabel.InvokeRequired)
         {
            SetTextCallback d = new SetTextCallback(SetText);
            this.Invoke(d, new object[] { text });
         }
         else
         {
             this.resultsLabel.Text = text;
         }
    }

标签正在快速更新,一切似乎都在运作。问题是,当我关闭窗体时,UI会锁定。如果我发表声明

SetText( results.ToString() );

然后表单正确关闭。如何让它正常关闭?

0 个答案:

没有答案