2

在 Free-Pascal 中,我将创建一个跨平台控制台程序,它将在一堆线程 (TThread) 中完成大部分工作。

主程序仅用于不时接收一些用户命令并执行这些命令(并保持整个程序运行)。

这个循环作为程序的主循环在 Windows 和 Linux 上都能完美运行,无需使用 cpu:

repeat
  Write('> ');
  ReadLn(s);
  // execute command
until s='exit';

但我需要线程来命令主程序做一些工作。这意味着我需要一种方法来阻止另一个线程的 ReadLn 继续并检查命令标志。如果我能以某种方式发送一个 Enter 键来欺骗 ReadLn 以结束它会很好。

是否有其他方法可以制作跨平台主循环,该循环侦听用户字符串或按键,同时可以从其他线程命令?

4

1 回答 1

2

Yes, use unit keyboard. This abstracted keyboard support allows to peek for events (keys) , and this means a boolean set in a thread could make it exit a loop.

See the keyboard unit in the (rtl) manual and textconsole games (fpctris, samegame) that come with a standard FPC install.

于 2013-03-13T20:33:48.010 回答