2012-11-22 17 views
5

Eventuali duplicati:
How can I determine whether Console.Out has been redirected to a file?
How to detect if Console.In (stdin) has been redirected?Console redirect con Console.CursorLeft

Il nostro sistema sta attualmente utilizzando una funzione CursorLeft sovrascrivere l'ultima cosa che si è stampato sulla console finestra:

Console.CursorLeft = 0; 

Questa è la funzionalità richiesta, quindi non posso cambiarla per stampare una nuova riga ogni volta.

Quando si reindirizza la console in un file di testo, si verifica IOException. Come posso ottenere il file di registro per saltare la visualizzazione di queste uscite o forzarlo a scriverle tutte?

risposta

0

È abbastanza ovvio per me che la console è diversa da un file. Ad esempio, è possibile utilizzare i colori nella console che andranno persi quando si reindirizza l'output a un file. Quindi non è garantito che dopo il reindirizzamento tutte le funzionalità della console possano essere preservate. Suggerirei di mettere in discussione questo requisito perché non sembra fattibile.

ogni modo ecco un problema simile basato sulla stessa Win32API sotto: "The handle is invalid" when running .net console via java

Ecco l'articolo da MSDN, che ha alcune informazioni su come funziona la console (in fondo alla pagina): http://msdn.microsoft.com/en-us/library/system.console.aspx

Un'altra cosa a cui pensare è che anche se potresti non essere in grado di risolvere questo problema, puoi sicuramente ri-progettare la tua applicazione, in modo da astrarre l'interazione diretta con la console con una classe di buffer che accumuli tutte le modifiche che vuoi apportare su una singola riga (o più righe) in un buffer virtuale e quindi effettuare una sola chiamata a Console.WriteLine quando si Sappiamo per certo che tutti i cambiamenti sono stati fatti e quella linea non sarà più cambiata.