我对代表们很困惑,我的思绪会自食其果。
我想连接两个不同的线程来做彼此的事情。 但显然,“跨线程调用是不安全的”例外,要求我提供代表。我已经阅读了无数的教程,文档,示例,而且我在每个示例中只有更多内容,因为我尝试了它,它只是不起作用。
这是我的简化,无代码方式的设置:
我有两个帖子
THREAD1 ,其中类DISPLAY_WITH_RICHTEXTBOX
该课程有 RICH_TEXT_BOX ,我将对其进行编辑。
该类有一个方法 int WRITE_TO_TEXTBOX_AND_RETURN_FEEDBACK(string text)
THREAD2 ,其中类SOME_CONTROL_PANEL
该课程中有 TEXT_BOX_OF_DOOM ,其中包含一些文字
该类有一个 BUTTON_OF_MAGIC ,它将调用另一个类的方法将文本框的文本添加到richtextbox。执行该方法后,该方法将返回一个 int ,其中包含Rich文本框文本的新总大小。
我的问题是,我无法弄清楚如何使这个结构成为最好的。
我如何实际构建委托。每当我在任何地方尝试任何东西时,代码都会抱怨代表只能用于静态的东西,但这对于我打算创建的内容来说是非常不切实际的。我可以通过在THREAD1中创建一些变量来解决这个问题,从THREAD2编辑它们,让THREAD1弄清楚如何处理变量,从而传递来自THREAD2> THREAD1的所有交互。但这让我的THREAD1代码如此凌乱而又不整洁,我想哭。
还有另一种从THREAD2调用函数的方法 - > THREAD1是否整洁且不涉及变量和自定义线程锁定代码来管理变量和内容?
我希望我能理解我的意思。
我只想拥有一个 THREAD1> CLASS1>富文本框
我可以使用THREAD2进行编辑> CLASS2>按键 所以我不编辑 - THREAD1中的任何内容> CLASS1
我的目标是让THREAD2成为一个完整的插件到程序中,使依赖只有单向(Thread2依赖于Thread1,没有Thread1期待它)
如果不能让Thread1忘记Thread2,我至少可以使Thread1参与最小化吗?
编辑:如果代表和其他相关的东西不是我要找的东西,我想要的是什么,如果我想要在他们自己的线程中运行单独的代码片段,独立于彼此,但是彼此混乱实现更大的目标;比如他们以任何方式编辑彼此;所以 我开发了“课程我的课程”以便独立运行,后来我制作了一个插件 2.“MY ADADON”与MY PROGRAM混淆但是它需要,而不需要返回并编辑MY PROGRAM代码以允许两个程序之间的通信。 是否存在可以实现此目的的编程语言,如果C#不能?
答案 0 :(得分:-1)
这是我在表单应用程序上用于在线程之间跳转并更改UI控件
Program.MainForm.Invoke((MethodInvoker)delegate {
//do changes here
});'