/// <summary> /// 思考エンジンに接続する。 /// </summary> /// <param name="data"></param> public void Connect(ProcessNegotiatorData data) { Disconnect(); // 前の接続があるなら切断する。 Log.Write(LogInfoType.UsiServer, $"思考エンジンに接続 , ExeFilePath = {data.ExeFilePath}"); try { negotiator = new ProcessNegotiator(); negotiator.Connect(data); negotiator.CommandReceived += UsiCommandHandler; // ProcessNegotiator.Read()を呼び出すまではハンドラの処理が行われないので、 // この形で書いても、最初のメッセージを取りこぼすことはない。 ChangeState(UsiEngineState.Connected); } catch (Exception ex) { // 思考エンジンに接続できないとき、Win32Exceptionが飛んでくる ChangeState(UsiEngineState.ConnectionFailed); Exception = new Exception("思考エンジンへの接続に失敗しました。\r\nファイル名 : " + data.ExeFilePath + "\r\n" + ex.Pretty()); } }
public void Start(string exePath) { Engine.AddPropertyChangedHandler("State", StateChanged); var data = new ProcessNegotiatorData(exePath) { IsLowPriority = true }; Engine.Connect(data); // 接続できているものとする。 }
public UsiEnginePlayer() { Initializing = true; engine = new UsiEngine(); engine.AddPropertyChangedHandler("State", StateChanged); var data = new ProcessNegotiatorData("engine/gpsfish/gpsfish.exe"); engine.Connect(data); // 接続できているものとする。 }
/// <summary> /// 思考エンジンに接続する。 /// </summary> /// <param name="data"></param> public void Connect(ProcessNegotiatorData data) { Disconnect(); // 前の接続があるなら切断する。 try { negotiator = new ProcessNegotiator(); negotiator.Connect(data); negotiator.CommandReceived += UsiCommandHandler; // ProcessNegotiator.Read()を呼び出すまではハンドラの処理が行われないので、 // この形で書いても、最初のメッセージを取りこぼすことはない。 ChangeState(UsiEngineState.Connected); } catch { // 思考エンジンに接続できないとき、Win32Exceptionが飛んでくる ChangeState(UsiEngineState.ConnectionFailed); } }
/// <summary> /// 思考エンジンに接続する。 /// </summary> /// <param name="data"></param> public void Connect(ProcessNegotiatorData data) { Disconnect(); // 前の接続があるなら切断する。 try { negotiator = new ProcessNegotiator(); negotiator.Connect(data); negotiator.CommandReceived += UsiCommandHandler; // ProcessNegotiator.Read()を呼び出すまではハンドラの処理が行われないので、 // この形で書いても、最初のメッセージを取りこぼすことはない。 ChangeState(UsiEngineState.Connected); } catch (Exception ex) { // 思考エンジンに接続できないとき、Win32Exceptionが飛んでくる ChangeState(UsiEngineState.ConnectionFailed); Exception = new Exception("思考エンジンへの接続に失敗しました。\nファイル名 : " + data.ExeFilePath + "\n詳細情報 : " + ex.Message); } }