我有一个带有无限循环方法的 C# 控制台应用程序,看起来像这样
while (true)
{
Event eventObj = session.NextEvent();
foreach (Message msg in eventObj)
{
System.Console.WriteLine(msg.ToString());
}
}
我试图以这种方式将其移植到 F#,添加在按下“Q”键时退出循环的功能。
member private this.SynchronousRespsonse =
let rec checkResponse =
let c = System.Console.ReadKey()
if c.Key = System.ConsoleKey.Q then
this.unsubscibe
else
let eventObj : Event = session.NextEvent()
for msg in eventObj do
printfn "%A" msg.ToString
checkResponse
但它不起作用。控制台输出为:
checking...
<fun:checkResonse@41-1>
Unsubscribing ...
如何编写循环以完成与 C# 相同的操作,同时添加一种方便的方式来退出循环?
编辑:
我正在寻找一种方法让它循环检查新事件,但如果按下“Q”键则停止。我不希望它在再次循环之前等待一个键。所以System.Console.ReadKey()
可能不是正确的选择。