如何从ElapsedEvent方法返回字符串?

本文关键字:返回 字符串 方法 ElapsedEvent | 更新日期: 2023-09-27 18:09:13

我有一个名为DeSerializeXML的反序列化函数,它返回一个字符串。我从另一个类调用它,我需要它基于计时器运行所以我在ElapsedEvent中为计时器

调用它
    private void frm_MyForm_Load(object sender, EventArgs e)
    {
        System.Timers.Timer myTimer = new Timer(2000);
        myTimer.Elapsed += new ElapsedEventHandler(ElapsedEvent);
        myTimer.Enabled = true;            
    }
    public static void ElapsedEvent(object source, ElapsedEventArgs e)
    {
        string x = OtherClass.DeSerializeXML();
    }

我怎么能把字符串值从ElapsedEvent,所以我可以把它分配给MyForm窗体上的文本框?如果这是一个措辞不好的问题,我很抱歉,我会根据需要添加注释/更多代码。谢谢所有的

如何从ElapsedEvent方法返回字符串?

Using Control。调用方法

public void ElapsedEvent(object source, ElapsedEventArgs e)
{
    string x = OtherClass.DeSerializeXML();
    frm.Invoke((Action)(() => textBox.Text = x);
}

注意:从方法签名中删除static关键字

尝试将返回的字符串设置为文本框的Text属性。

textBox1.Text = OtherClass.DeSerializeXML();

如果你得到任何复杂的关于非ui线程尝试使用Invoke。这样的:

var txt = OtherClass.DeSerializeXML();
if (InvokeRequired)
{
    //this is the Form
    this.Invoke(new Action<string>(textBox1), new object[] {txt});
    return;
}
textBox1.Text = txt;