要访问表单上的备忘录,请使用以下代码
public string TextValue
{
set
{
if (this.Memo.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate
{
this.Memo.Text += value + "\n";
});
}
else
{
this.Memo.Text += value + "\n";
}
}
}
我想使用相同的代码启用/禁用我的计时器,但计时器没有属性InvokeRequired。
public int Timer
{
set
{
if (this.timer.InvokeRequired) //?? No such thing
{
this.Invoke((MethodInvoker)delegate
{
if (value == 1)
this.timer.Enabled = true;
else
this.timer.Enabled = false;
});
}
else
{
if (value == 1)
this.timer.Enabled = true;
else
this.timer.Enabled = false;
}
}
}
如何从其他线程启用计时器?
答案 0 :(得分:2)
“this”是表单对象吗?
假设您使用表单设计器创建了Timer对象,该对象由创建表单的线程创建,因此检查表单的InvokeRequired属性会有效地告诉您相同的事情。
答案 1 :(得分:1)
从以下代码中删除计时器:
public int Timer
{
set
{
if (this.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate
{
if (value == 1)
this.timer.Enabled = true;
else
this.timer.Enabled = false;
});
}
else
{
if (value == 1)
this.timer.Enabled = true;
else
this.timer.Enabled = false;
}
}
}