簡體   English   中英

控制台輸出到不使用SetOut的文件

[英]Console Output to a File not using SetOut

我從C#打電話給Gurobi(好幾次)。 因此,控制台輸出是我的和Gurobi日志記錄的混合。 如果我覆蓋Console.Out,則僅重定向我的輸出,但是Gurobi(顯然包裝了非托管dll)仍然寫入屏幕。

有什么方法可以從控制台獲取每一行(作為字符串或文件)?

您可以使用回調對象捕獲Gurobi的控制台輸出。 回調對象有一個Callback()方法,該方法被調用的原因有很多,其中之一是告訴您要寫入控制台的文本。 您可以使用此文本執行任何操作。 在下面的示例中,我將文本編寫為調試輸出:

class MyGRBCallback : GRBCallback
{
    protected override void Callback()
    {
        if (this.where == GRB.Callback.MESSAGE)
        {
            String text = this.GetStringInfo(GRB.Callback.MSG_STRING);
            Debug.WriteLine(text);
        }
    }
}

您可以使用GRBModel的SetCallback方法向Gurobi告知您的回調對象。

var env = new GRBEnv();
var m = new GRBModel(env);
var callback = new MyGRBCallback();
m.SetCallback(callback);

此時,Gurobi將調用您的回調並寫入控制台。 您可以告訴Gurobi不要寫入控制台:

env.Set(GRB.IntParam.LogToConsole, 0);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM