我具有以下Winforms层次结构。
Form ==> AForm ==> BForm
在
int? X;
中定义了一个可以为空的成员FormA
。在FormB
中,有以下代码。public partial class FormA: Form
{
public int? X { get; set; }
public FormA(int? x) { X = x }
....
public partial class FormB: FormA, IFormAView
{
public FormB()
{
AsyncCall(() =>
{
int z = X ?? 0;
System.Diagnostics.Debug.WriteLine("X: " + X.ToString() + " z: " + z.ToString());
return z;
}
public static T GetForm<T>(int? x)
{
T form = new T();
form.X = x;
form.Show();
}
GetForm<FormB>(100);
X
从未分配为null或零。我正在尝试关闭并打开FormB
表单。有时z
为零(也许每10次一次)。我设置了一个条件中断,当z==0
在行return z
上时中断。当达到断点时。调试写
X: z: 0
即使调试显示FormA:X不为零。
最佳答案
您正在另一个线程上调用代码以测试X(使用AsyncCall和“ X ??”),该代码可以在FormA构造函数中分配X之前或之后运行,也可以不运行。
也就是说,如果您停止使用AsyncCall,则应该获得一致的结果。