2016-08-10 21 views
1

私はboolを持っています。クイッククエリをテストしてローカルWebサービスが利用可能かどうかを確認し、失敗した場合はStartOSRMService()が実行されます。実行時に文字列の末尾に追加される文字

構成:

Config config = new Config 
    { 
     localhostNearest = "C:/path/...", 
     localhostRoute = "C:/path/...", 
     processLocation = @"C:/path/...", 
     WorkingDirectory = @"C:/path/...", 
     DataSource = "file-latest.osrm" 
    }; 

StartOSRMService()

private void StartOSRMService() 
    { 
     var startInfo = new ProcessStartInfo(config.processLocation); 
     startInfo.WorkingDirectory = config.WorkingDirectory; 
     startInfo.UseShellExecute = false; 
     startInfo.Arguments = config.DataSource; 
     Process.Start(startInfo); 
    } 

ServiceAvailable():

public bool ServiceAvailable() 
    { 
     string lon = "-0.00000000"; 
     string lat = "51.0000000000"; 
     try 
     { 
      WebRequest request = WebRequest.Create($"{config.localhostNearest}{lon},{lat}"); 
      WebResponse response = request.GetResponse(); 
      Stream dataStream = response.GetResponseStream(); 
      StreamReader reader = new StreamReader(dataStream); 
      string responseFromServer = reader.ReadToEnd(); 
      Routing point = new JavaScriptSerializer().Deserialize<Routing>(responseFromServer); 
      if (point.code == "Ok") 
      { 
       return true; 
      } 
      StartOSRMService(); 
      return false; // Needed but never executed? 
     } 
     catch (Exception) 
     { 
      StartOSRMService(); 
      // TODO receive routes? 
      return false; 
     } 
    } 

StartOSRMService()が走っている、私はこの出力を得る:これ以降のコンソールから出てくるすべてに追加され[0m

[info] starting up engines, v5.3.0[0m 
[info] Threads: 8[0m 
[info] IP address: 0.0.0.0[0m 

。つまり、request()に文字列を送信すると、文字列に[0mが追加され、正しくフォーマットされたresponse()が返されません。

Visual Studioでアプリケーションを実行する前にCMDからOSRMを実行すると、この問題は発生しません。

誰でも私になぜ[0mが出現するのか、どうやったらそれを取り除くことができるのか教えていただけますか?あなたはそれがだと思っプログラムからそこに来て読んでいるように見えるものは何でも

+0

た.. – BugFinder

+0

ターミナル(エミュレータ)に物を印刷し、途中で色を変えます。おそらくそれをオフにするコマンドラインオプションがあります。出力はプログラムで読めると思われるのでしょうか、あるいはあなたが望むデータを得るためのより良い方法がありますか? – Joey

+0

@Joey cmd.exeにコマンドを送信しています(これはCMDから 'OSRM'を実行するために手動で入力して実行するものと同じです)、色を変更しているものを通過してはなりません... –

答えて

1

これに対する解決策が正常に戻ってリセットするには... 0メートルは、ANSIカラー文字列の端部である[Console.ResetColor();"