设置System.Console.WindowHeight会在Mono下抛出System.NotSupportedException

Lor*_*uer 1 console mono window exception c#-3.0

我得到了一个Unhandled Exception: System.NotSupportedException: Operation is not supported.使用Ubuntu 11.10在Mono下引发的异常.

阅读财产有效.该文档可能表明,该方法不构成问题.

关于如何最好地处理或解决这种情况的任何想法?

目前的解决方案相当尴尬,并没有解决通过System.Console-API设置窗口大小的问题:

        const int defaultConsoleWindowWidth = 80;
        const int defaultConsoleWindowHeight = 25;


        if (pid != PlatformID.Unix && pid != (PlatformID)128) {
            System.Console.WindowHeight = lastConsoleWindowHeight;
            System.Console.WindowWidth = defaultConsoleWindowWidth;
        }else{
            //assume *NIX system
            try {
                var p = new Process();
                p.StartInfo = new ProcessStartInfo(@"stty cols " + defaultConsoleWindowWidth + " rows " + lastConsoleWindowHeight, "-n")
                {
                    UseShellExecute = false
                };

                p.Start();
                p.WaitForExit();
            }
            catch (Exception e) { /*...*/}


        }
Run Code Online (Sandbox Code Playgroud)

我的单声道版本:

lo@lo-VirtualBox:~/Desktop$ mono --version
Mono JIT compiler version 2.10.8.1 (Debian 2.10.8.1-1ubuntu2.2)
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
TLS:           __thread
SIGSEGV:       altstack
Notifications: epoll
Architecture:  x86
Disabled:      none
Misc:          softdebug 
LLVM:          supported, not enabled.
GC:            Included Boehm (with typed GC and Parallel Mark)
Run Code Online (Sandbox Code Playgroud)

小智 5

Github Console.cs上的mono上master分支:

[MonoLimitation ("Only works on windows")]
public static int WindowHeight {
    get { return ConsoleDriver.WindowHeight; }
        set { ConsoleDriver.WindowHeight = value; }
}
Run Code Online (Sandbox Code Playgroud)

注意MonoLimitation属性