只是一个关于主线程中的Invoke()的查询

时间:2017-02-16 18:29:45

标签: c# multithreading thread-safety invoke

我有一个属性,可以使用Invoke()(来自线程)的方法和同一类中没有invoke()的方法进行修改。

如果他们在同一时刻被召唤会发生什么?

这可能吗?既然可以在某些方法中影响条件。

例如:

public class Test{
    public bool testBool { get; set; }

    public void MethodWIthInvoke(){
        this.Invoke(new Action(() =>
        {
            if (testBool)
            {
                testBool = false;
            }
        }));
    }

    public void Method(){
        if (testBool)
        {
            testBool = false;
        }
    }
}

1 个答案:

答案 0 :(得分:-1)

我不知道为什么你需要以这种方式编写代码,因为这两个方法都将从同一个线程调用然后就可以了。我想建议另一种编写代码的方法如下:

public class Test{
public bool testBool { get; set; }

 public void Method()
    {
        if (this.InvokeRequired)
        {
            this.Invoke(new Action(() =>
            {
                if (testBool)
                {
                    testBool = false;
                }
            }));
        }
        else
        {
            if (testBool)
            {
                testBool = false;
            }
        }
    }
}