我有一个控制台重定向到的RichTextBox。每次写入控制台时,控制台重定向器都会委派AppendText()调用。但是,GUI会在附加文本时锁定,并且由于日志是在快速连续的时间段内写入的,因此主线程/ GUI会锁定,直到不再附加文本为止。有没有办法在从另一个线程追加日志时允许控制表单?
答案 0 :(得分:3)
不,您无法安全地从非UI线程更新UI。
如果您有其他想要完成的UI工作,您需要让控制台重定向功能只需花费更少的时间来更新UI。不要让它随时更新UI。让它缓冲数据并减少写入UI的频率,或者如果有太多数据显示所有内容(同时还做其他必要的工作),则限制控制台输入。
答案 1 :(得分:2)
总而言之,没有你无法摆脱锁定。 UI线程在工作时将被锁定,当你调度它时,你实际上在说,我想在UI线程上运行这段代码。
缓解一些“锁定”问题。你需要努力做到"聪明"关于它。
我看到你正在使用winforms,如果这是你控制的项目,那么去WPF。