为什么局部变量在timerclick事件中变为空
本文关键字:事件 局部变量 timerclick 为什么 | 更新日期: 2023-09-27 18:13:45
当我以编程方式调用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;
}
}
您混淆了您在此处声明的成员message
:
string message = string.Empty;
使用参数,您(意外地?(命名了相同的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();
}
string message = string.Empty; //Never change.
public void OnMessageReceieve(string message)
{
// I have a message in message variable (this is a parameter, not a field class)
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)) //<-- this.message
{
txtMessage.Text += message;
}
}
解决方案:
string message = string.Empty;
public void OnMessageReceieve(string message)
{
// I have a message in message variable
this.message = message; //<-- Add this line.
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;
}
}