为什么局部变量在timer_click事件中变空?

bil*_*lal 0 c# webforms timer

当我以编程方式调用Timer1_Tick(null,null)事件消息变空时?如何解决此问题OnMessageReceieve在事件触发时调用.

string message = string.Empty;
public void OnMessageReceieve(string message)
{
   //  I have a message in message variable
   txtMessage.Text += message;
   Timer1.Enabled = true;
   Timer1_Tick(null, null);
   // UpdatePanel1.Update();                  
}

protected void Timer1_Tick(object sender, EventArgs e)
{
   //message variable gets empty here?
   if (!string.IsNullOrEmpty(message))
   {
      txtMessage.Text += message;
   }                
}
Run Code Online (Sandbox Code Playgroud)

Ren*_*ogt 8

你混淆了你在这里宣布的成员 message:

string message = string.Empty;
Run Code Online (Sandbox Code Playgroud)

参数你(意外?)命名相同message.

在您的OnMessageReceive方法中,您不设置成员值,但在您Timer1_Tick访问该成员的内部.

立即解决方案是将成员设置为OnMessageReceive:

public void OnMessageReceieve(string message)
{
     txtMessage.Text += message;

     // set member!!
     this.message = message;

     Timer1.Enabled = true;
     Timer1_Tick(null, null);
     // UpdatePanel1.Update();          
}
Run Code Online (Sandbox Code Playgroud)