C#代表混乱和缺乏知识
我对代表们感到很困惑,我的大脑会自己吃东西 我想把两个不同的线程连接起来,互相做一些事情。 但是很明显,“跨线程调用是不安全的”异常到处都是,要求我提供代理。我读过无数的教程,文档,例子,每个例子我只会死得更多一些,因为我尝试过,它根本不起作用 以下是我的简化设置,无需编写代码: 我有两条线 THREAD1具有类显示功能,并带有RICHTEXTBOX 该类有一个富文本框,我将对其进行编辑 该类有一个方法int WRITE\u TO\u TEXTBOX\u和返回\u反馈(字符串文本) 螺纹2具有类控制面板 该类有一个“厄运”文本框,其中包含一些文本 该类有一个按钮\u OF_MAGIC,它将调用另一个类中的方法,将文本框的文本添加到richtextbox。在执行该方法后,该方法将返回一个int,其中包含富文本框文本的新总大小 我的问题是,我不知道如何使这个结构成为最整洁的C#代表混乱和缺乏知识,c#,multithreading,delegates,C#,Multithreading,Delegates,我对代表们感到很困惑,我的大脑会自己吃东西 我想把两个不同的线程连接起来,互相做一些事情。 但是很明显,“跨线程调用是不安全的”异常到处都是,要求我提供代理。我读过无数的教程,文档,例子,每个例子我只会死得更多一些,因为我尝试过,它根本不起作用 以下是我的简化设置,无需编写代码: 我有两条线 THREAD1具有类显示功能,并带有RICHTEXTBOX 该类有一个富文本框,我将对其进行编辑 该类有一个方法int WRITE\u TO\u TEXTBOX\u和返回\u反馈(字符串文本) 螺纹2具
如果C#做不到,有没有一种编程语言可以实现这一点呢?这就是我在表单应用程序中用来在线程之间切换并更改UI控件的方法
Program.MainForm.Invoke((MethodInvoker)delegate {
//do changes here
});'
一个程序在多个线程上有UI是非常罕见的。你为什么需要这个?把所有的东西移到一个UI线程上。我不可能做到这一点。第二个UI线程做它自己的事情,在我的例子中,作为一个服务器。它需要尽快回复,并将事情记录回UI,而UI也需要快速响应。我不希望服务器类仅仅为了绘制一个愚蠢的UI而失去性能。它只是试图将数据传递给UI,而UI不会“过于复杂”以避免性能损失(例如来自另一个线程的简单方法调用;没有其他废话),但数据锁定使其变得不可能;如何禁用数据锁定?令人惊讶。您的第二个UI线程如何同时成为“服务器”?您不应该阻止UI线程,因为这会使UI挂起。难道你不能让一个UI线程和其他线程来完成大部分工作(比如运行“服务器”)吗?UI控件只能在UI线程上访问,因为EnySign else将是快速的。