我的批处理脚本连续执行了15次。
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
ThemeManager.ChangeAppStyle(this,
ThemeManager.GetAccent("Amber"),
ThemeManager.GetAppTheme("BaseDark"));
var allTypes = typeof(App).Assembly.GetTypes();
var filteredTypes = allTypes.Where(d =>
typeof(MetroWindow).IsAssignableFrom(d)
&& typeof(MetroWindow) != d
&& !d.IsAbstract).ToList();
foreach (var type in filteredTypes)
{
var defaultStyle = this.Resources["MetroWindowDefault"];
this.Resources.Add(type, defaultStyle);
}
base.OnStartup(e);
}
}
结果返回1:09。我已经尝试了几毫秒,而它正好落后了一毫秒。这怎么可能?
答案 0 :(得分:2)
这是因为CMD.EXE在执行命令之前会扩展%time%。以下内容将为您提供您期望的结果:
setlocal enabledelayedexpansion
time 1:10
echo !time!
答案 1 :(得分:0)
(仅限理论)
我建议发生的事情是,设定的时间实际上比定义的时间早一个“滴答”。
然后,当下一个“滴答”发生时,时间变为“定义”。
下一次“滴答”发生的时间是从1纳秒(直接在设定时间之后)到之后的一个“滴答”(即在设定时间之前发生滴答)的任何时间。
如果时间不这样设置,那么在设置之后直接读取时间将随机说(时间设置)或(时间设置+ 1刻度)取决于设定读数后多久才实际执行。当然,如果 以这种方式设置,那么它会随机说(时间设置 - 1刻度)或(时间设置)......
那么 - 嘀嗒多久?假设它是1ms(直观上有意义)那么显示的时间是在centicesonds中,所以截断它是* .99秒
我质疑断言 echo%time%返回1:09:99.99 。我更倾向于相信 1:09:59.99
正如我所说,只有理论......