C# 私有变量在异步方法中具有不同的值

C# 私有变量在异步方法中具有不同的值,c#,winforms,async-await,C#,Winforms,Async Await,我有一个两个私有变量,它在表单加载时填充 private int _days = 0; private int _calc = 0; public override void OnLoad(obejct sender, EventArgs e) { ... _days = 2; _calc = 500; ... } 然后,这些私有变量将与表单的async方法一起使用。此方法是此窗体基类方法的重写方法 public override async void Pop

我有一个两个私有变量,它在表单加载时填充

private int _days = 0;
private int _calc = 0;

public override void OnLoad(obejct sender, EventArgs e)
{
    ...
    _days = 2;
    _calc = 500;
    ...
}
然后,这些私有变量将与表单的
async
方法一起使用。此方法是此窗体基类方法的重写方法

public override async void Populate(object sender, EventArgs e)
{
    ...
    int b = _days; // _days = 0 here, but should be 2
    int x = _calc; // _calc is 500
    ...
}
调试和查看私有变量时
\u days
。此处设置为
0
,但查看另一个变量
\u calc
是所需的
500


为什么会这样?

如果你能提供一个解决方案,它将允许其他人重复你的问题,并为你提供更好的解决方案的机会。你能添加
MessageBox.Show(“OnLoad----\u days=“+\u days+”\u calc=“+\u calc”)OnLoad
和相同的消息中分配这两个变量后,是否使用
Populate in first part
内部的
Populate
函数在使用它们之前进行编码?