我是使用Compact Framework的C#,我今天意识到了一些奇怪的东西。我通过将set
应用于对象的事件调用方法,当我调试时,它会通过此方法,但只是在方法的最后一个小括号之后执行。我的例子:
public string Loading
{
set { lblLoading.Text = value; }
}
private void btnAuth_Click(object sender, EventArgs e)
{
Loading = "Loading...";
_presenter.PerformAuth();
}
当我调试时,它会通过我的第一个语句,应用它,但不会改变屏幕上的任何内容......哦,直到它PerformAuth()
。之后,那么标签值就会改变。哦,问题不在于它是同步的。当我尝试执行异步任务时也会出现同样的情况:
private void btnAuth_Click(object sender, EventArgs e)
{
ASyncResult res = BeginInvoke(new Action(() =>Loading = "Loading..."));
EndInvoke(res);
_presenter.PerformAuth();
}
我认为它可能是线程和C#设计实现中的错误。而且直接设置它对我来说很顽固。如下图所示:
我只想在标签中设置文本,调用方法并在事件中取消设置。为什么C#会让它如此复杂?