Skip to main content
 首页 » 编程设计

c#之委派给 GUI 时避免主线程锁定

2024年01月31日29kevingrace

我有一个控制台被重定向到的 RichTextBox。每次写入控制台时,控制台重定向器都会委托(delegate) AppendText() 调用。但是,GUI 在追加文本时会锁定,并且由于日志是在快速连续的期间写入的,因此主线程/GUI 会锁定,直到不再追加文本为止。有没有办法在从另一个线程追加日志时允许控制表单?

请您参考如下方法:

不,您不能从非 UI 线程安全地更新 UI。

如果您有其他想要完成的 UI 工作,您需要让控制台重定向功能花费更少的时间来更新 UI。不要让它一直更新 UI。让它缓冲数据并降低写入 UI 的频率,或者如果数据太多无法显示所有内容(同时还做其他必要的工作),则限制控制台输入。