最近我正在研究国际象棋,对于人工智能,我正在使用带有 UCI 协议的 Stockfish。感谢以下 2 个链接(UCI 协议:http ://wbec-ridderkerk.nl/html/UCIProtocol.html和这篇文章:在 Unity 中使用 Stockfish Chess AI)我已经取得了一些进展,但我有一个问题。
这是我的代码:
var p = new System.Diagnostics.Process();
p.StartInfo.FileName = "C:/stockfish/stockfish-11-win/Windows/stockfish_20011801_32bit";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
StreamWriter myStreamWriter = p.StandardInput;
myStreamWriter.WriteLine("position fen " + fen);
myStreamWriter.WriteLine("go movetime 2000");
myStreamWriter.Close();
Thread.Sleep(2000);
StreamReader reader = p.StandardOutput;
String bestMoveInAlgebraicNotation = reader.ReadToEnd();
reader.Close();
p.Close();
return bestMoveInAlgebraicNotation;
当我用以下代码询问 Stockfish 时:myStreamWriter.WriteLine("go movetime 2000");
他这样做了,但是当我要求关闭进程时立即停止:p.Close();
所以我想让进程等到任务完成,有没有办法做,怎么做?
感谢您阅读我,祝您有美好的一天。