2012-11-22 37 views
5

thể trùng lặp:
How can I determine whether Console.Out has been redirected to a file?
How to detect if Console.In (stdin) has been redirected?điều khiển chuyển hướng với Console.CursorLeft

hệ thống của chúng tôi đang sử dụng một hàm CursorLeft viết trong Điều cuối cùng mà đã được in vào giao diện điều khiển cửa sổ:

Console.CursorLeft = 0; 

Đây là chức năng được yêu cầu, vì vậy tôi không thể thay đổi nó để chỉ in một dòng mới mỗi lần.

Khi chuyển hướng bảng điều khiển sang tệp văn bản, IOException xảy ra. Làm thế nào tôi có thể nhận được các tập tin đăng nhập hoặc bỏ qua hiển thị các kết quả đầu ra hoặc buộc nó để viết tất cả mọi người trong số họ ra?

Trả lời

0

Điều hiển nhiên đối với tôi là bảng điều khiển khác với tệp. Ví dụ: bạn có thể sử dụng các màu trong bảng điều khiển sẽ bị mất khi bạn chuyển hướng đầu ra đến một tệp. Vì vậy, nó không đảm bảo rằng sau khi chuyển hướng tất cả các chức năng điều khiển có thể được bảo tồn. Tôi sẽ đề nghị đặt câu hỏi rằng yêu cầu bởi vì nó dường như không khả thi.

Anyways, đây là một vấn đề tương tự dựa trên Win32API cùng bên dưới: "The handle is invalid" when running .net console via java

Dưới đây là bài viết từ MSDN trong đó có một số thông tin về cách thức giao diện điều khiển công trình (ở dưới cùng của trang): http://msdn.microsoft.com/en-us/library/system.console.aspx

Một điều khác cần lưu ý là mặc dù bạn không thể khắc phục vấn đề này, bạn có thể kiến ​​trúc lại ứng dụng của mình, để bạn tóm tắt tương tác trực tiếp với bảng điều khiển với một số lớp đệm tích lũy tất cả các thay đổi bạn muốn thực hiện vào một dòng đơn (hoặc một vài dòng) trong bộ đệm ảo và sau đó chỉ thực hiện một cuộc gọi đến Console.WriteLine khi bạn biết chắc chắn rằng tất cả các thay đổi đã được thực hiện và dòng đó sẽ không bị thay đổi nữa.

Các vấn đề liên quan