正如您在附带的屏幕截图中看到的那样,我正在检查sb的长度,如果它不是0,它将执行Replace命令。
然而,不知何故,Length为零,它正在执行Replace命令并抛出异常。但是'_str'中有内容,所以我不明白长度如何为零......
这是StringBuilder中的错误吗?
下面是另一个错误,可能与上面的错误有关。您可以看到我注释掉了Replace命令,现在它在ToString()上失败了。
答案 0 :(得分:1)
您是如何使用NSLogWriter
的?像这样(见我的blog):
Console.SetOut (new NSLogWriter ());
Console.WriteLine ("we're back in action!");
或者您正在创建(和使用)您自己的实例? e.g。
var log = new NSLogWriter ();
log.WriteLine ("uho");
如果你使用第二种方式,那么你需要自己处理多线程。例如。另一个日志可以在sb
支票和Length
来电之间刷新(并清除Replace
)。
System.Console
可以避免这种情况,因为NSLogWriter
包含TextWriter.Synchronized
,例如类似于:
stdout = new NSLogWriter ();
stdout = TextWriter.Synchronized (stdout);