C#代表混乱和缺乏知识

时间:2014-06-08 18:24:42

标签: c# multithreading delegates

我对代表们很困惑,我的思绪会自食其果。

我想连接两个不同的线程来做彼此的事情。 但显然,“跨线程调用是不安全的”例外,要求我提供代表。我已经阅读了无数的教程,文档,示例,而且我在每个示例中只有更多内容,因为我尝试了它,它只是不起作用

这是我的简化,无代码方式的设置:

我有两个帖子

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文本框文本的新总大小。

我的问题是,我无法弄清楚如何使这个结构成为最好的。

  1. 我是否通过委托或其他方式显式操作控件,使THREAD2升级到THREAD1,从而可以轻松地接收/取出代码
  2. 我是否可以调用方法为我进行编辑,这会使THREAD2类上的THREAD1类依赖
  3. 我如何实际构建委托。每当我在任何地方尝试任何东西时,代码都会抱怨代表只能用于静态的东西,但这对于我打算创建的内容来说是非常不切实际的。我可以通过在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#不能?

1 个答案:

答案 0 :(得分:-1)

这是我在表单应用程序上用于在线程之间跳转并更改UI控件

Program.MainForm.Invoke((MethodInvoker)delegate {

    //do changes here  

});'