我有两个方法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状态。答案 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";
}