在.net中不能直接在UI Control的创建线程之外修改UI Control的属性和内容。一个基本办法是通过调用UIControl 的Invoke方法。示例:timer触发的函数中更新label的值。
private void btnConversion_Click(object sender, EventArgs e)
{
tm.Elapsed += new ElapsedEventHandler(Conversion);
tm.Interval = 5000;
tm.Enabled = true;
}
public delegate void UpdateEncodeMessageCallback(string Message);
private void UpdateMessage(string Message)
{
lblEncodeMessage.Text = Message;
}
private void Conversion(object source, ElapsedEventArgs e)
{
lblEncodeMessage.Invoke(new UpdateEncodeMessageCallback(this.UpdateMessage), new object[] { FS.EncodeMessage.ToString() });
}