我有两种形式,form1
和form2
。在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。
答案 0 :(得分:0)
需要注意的一点是,如果您是Application.DoEvents()
,则必须在代码中致电updating the UI in the worker thread
。调用Application.DoEvents()将确保工作线程引发的任何事件都由UI线程处理。