当前位置: 首页 > 编程语言 > C#

其他类WinForm控件的线程安全更新分享

时间:2023-04-11 02:13:35 C#

其他类WinForm控件的线程安全更新谁能帮我解决以下问题:有两个类,MainForm和LWriter。下面是LWriter的方法,除了写入文件外,还会向RichTextBox控件发送一些更新(通过mainForm.UpdateLog(text))。一切正常,但是,此WriteOutput方法还进行了一些广泛的处理,在计算过程中冻结了表单。我认为WriteOutput应该封装在一个单独的线程中。有人可以帮我解释一下如何将WriteOutput(LWriter类)放入线程中,然后以安全的方式从mainFrom调用mainForm.UpdateLog()吗?我是线程的新手,因此非常感谢您的帮助。publicvoidWriteOutput(stringoutput,Links[]links){try{using(StreamWritersw=newStreamWriter(output)){for(intx=1;x{mainForm.UpdateLog();});正如Sonu所建议的,委托可用于线程安全调用,您可以使用Linq缩短代码:this.BeginInvoke((Action)delegate(){//codetoupdateUI});有关详细信息,请参阅此链接。与UI控件的交互必须在UI线程上完成。您可以在后台线程上构建字符串,但您应该在与UI线程交互之前使用Control.Invoke或Control.BeginInvoke来编组UI线程。网络上有很多这样的例子,StackOverflow。以上就是C#学习教程:从其他类型的线程安全更新WinForm控件共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: