我有以下D程序:
void main( string[] args )
{
import core.thread, std.stdio;
for ( int i = 10; i > 0; --i )
{
writeln( i );
Thread.sleep(dur!"seconds"(1) );
}
writeln("Bang!");
}
从10减少到1,然后输出"Bang!"
。在每个输出之间,程序等待一秒的持续时间。当我在Eclipse(Eclipse平台,版本:3.8.1,构建id:debbuild)中使用DDT插件(版本:0.8.1.v201309231)运行此程序时,控制台输出正如预期的那样,但它只会在程序已经运行完毕。
当我从控制台启动相同的程序时,程序就会按预期运行。
我该如何解决?
答案 0 :(得分:7)
在睡眠线之前放入stdout.flush()。 stdout是缓冲的,因此flush确保它实际上已经到达设备而不是在缓冲区中等待。