我具有以下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,则应该获得一致的结果。

10-05 21:08