【发布时间】:2013-12-23 12:39:13
【问题描述】:
我有两个方法 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 方法。我可以' t 让这段代码 "var xx = "test";"要执行,除非 B 返回 true,如果它返回 false,则代码应在此处等待(在 var isValid = B();),除非 B 返回 true,即代码应不断检查 B 状态。
【问题讨论】:
-
如果您在同一个线程上执行这两种方法,它将等到 B() 完成。你在使用多线程吗?
-
作为不相关的评论,您的
B方法是否确认所有数据都在文件中,而不仅仅是一些数据?根据文件的生成方式,您可能需要确保在文件仍在写入时不会将其注册为具有内容。