Перенаправьте stdout+stderr на службе Windows C#

Это - типичная проблема в анализе конечных элементов. Это называют "автоматическим поколением сетки". Google нашел этот сайт со ссылками на коммерческое и программное обеспечение с открытым исходным кодом. Они обычно предполагают, что некоторое представление CAD геометрии запускается.

14
задан Peter Mortensen 7 March 2011 в 20:16
поделиться

2 ответа

Это можно сделать с помощью PInvoke на SetStdHandle :

[DllImport("Kernel32.dll", SetLastError = true) ]
public static extern int SetStdHandle(int device, IntPtr handle); 

// in your service, dispose on shutdown..
FileStream filestream;
StreamWriter streamwriter;

void Redirect()
{   
    int status;
    IntPtr handle;
    filestream = new FileStream("logfile.txt", FileMode.Create);
    streamwriter = new StreamWriter(filestream);
    streamwriter.AutoFlush = true;
    Console.SetOut(streamwriter);
    Console.SetError(streamwriter);

    handle = filestream.Handle;
    status = SetStdHandle(-11, handle); // set stdout
    // Check status as needed
    status = SetStdHandle(-12, handle); // set stderr
    // Check status as needed
}
23
ответ дан 1 December 2019 в 12:26
поделиться

Проверьте Console.SetOut метод.

Это позволит вам перенаправить вывод консоли на TextWriter.

0
ответ дан 1 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: