更新移动应用程序(CF)中的标签文本

时间:2014-07-11 15:02:33

标签: c# visual-studio-2010

我有两种形式,form1form2。在form2我使用线程来完成某项任务。

窗口2:

private void Cleanup()
        {
            System.Threading.Thread Writeevent = new System.Threading.Thread(WriteOutEvents);
            Writeevent.IsBackground = true;
            Writeevent.Start();           
        }
private void WriteOutEvents()
        {
         //some code
         refresh_label();
         }

在form1中,我有一个带count的标签。我需要在完成form2中的线程进程后更新form1中的计数。

Form1中:

internal void refresh_label()
        {
            //other code 
            string[] eventFiles = Directory.GetFiles(directoryName);
            unsubmitted_label.Text = unSubmitted + eventFiles.Length;
            unsubmitted_label.Refresh();
        }

它在线程中调用refresh_label()函数,但值没有更新。

我试过下面的一个,也没有用

 unsubmitted_label.Invoke(new Action(() => unsubmitted_label.Text = "unSubmitted"));

我需要在完成form1中的线程中的进程后更新form2中的标签计数。是否可以从form2更新form1 UI。

1 个答案:

答案 0 :(得分:0)

需要注意的一点是,如果您是Application.DoEvents(),则必须在代码中致电updating the UI in the worker thread。调用Application.DoEvents()将确保工作线程引发的任何事件都由UI线程处理。

Microsoft .NET Compact Framework Multi-threading Tips