等待方法返回true

时间:2013-12-23 12:39:14

标签: c# asp.net .net c#-4.0

我有两个方法A和B.A从内部调用B方法。无论文件是否包含内容,B方法都返回true或false。这是代码:

    public static void A()
    {
        var isValid = B();
        // Wait until "isValid" comes true
        var xx = "test";
    }

    public static bool B()
    {
        // This will check for a file content
        // Say C://test.txt
        // If the file has some content this method will return true else false
    }

我希望A方法等待并且不执行“var xx =”test“;”行除非B方法返回true。你能指点一下如何帮助我吗?

编辑:我不能简单地使用if循环,即if(isValid),因为要检查内容的文件是由其他一些线程写的,所以我需要从A里面不断检查B方法。我可以'让这段代码“var xx =”test“;”要执行除非B返回true并且如果它返回false则代码应该在那里等待(在var isValid = B();)除非B返回true,否则代码应该连续检查B状态。

4 个答案:

答案 0 :(得分:6)

你应该使用while循环

while (!B ()) { }
var x = "test";

这将执行B,直到它返回true。更好的方法可能是实现一个在条件变为真时触发的事件。

考虑到您正在使用文件,您可以查看FileSystemWatcher,它可以在文件更改时触发方法。

答案 1 :(得分:3)

使用FileSystemWatcher对象,Changed事件处理程序指向将在文件内容更改时执行的方法(并且在更改后包含内容)。

请参阅示例here

答案 2 :(得分:0)

试试这个:

if(B())
    var xx = "test";

答案 3 :(得分:0)

试试这个

public static void A()
    {
       while(!B())
        {
       var isValid = B(); //whatever the code 
        }
     var xx = "test";
    }