Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading C#NET中多线程向主窗体发送数据_Multithreading_Events_Delegates - Fatal编程技术网

Multithreading C#NET中多线程向主窗体发送数据

Multithreading C#NET中多线程向主窗体发送数据,multithreading,events,delegates,Multithreading,Events,Delegates,我有多个IP设备连接到我的计算机。每个设备都使用单独的线程连接。每个线程使用类实例分配一个函数,并使用套接字编程进行通信。所有设备都独立地向PC软件发送数据。现在我必须将这些数据发送到我的主窗体(其他类)以显示。怎么做 提前谢谢 我建议您将回调函数(从主窗体)传递给每个实例。然后,您可以为每个线程分配一些Id,并在调用此回调时将此线程Id与数据一起传递,以便区分它们。一种方法是拥有一个所有线程(包括主线程)都知道的对象,您可以将接收到的数据放在其中。主线程/窗体只需要不时地阅读它。在写入/读取该

我有多个IP设备连接到我的计算机。每个设备都使用单独的线程连接。每个线程使用类实例分配一个函数,并使用套接字编程进行通信。所有设备都独立地向PC软件发送数据。现在我必须将这些数据发送到我的主窗体(其他类)以显示。怎么做


提前谢谢

我建议您将回调函数(从主窗体)传递给每个实例。然后,您可以为每个线程分配一些Id,并在调用此回调时将此线程Id与数据一起传递,以便区分它们。

一种方法是拥有一个所有线程(包括主线程)都知道的对象,您可以将接收到的数据放在其中。主线程/窗体只需要不时地阅读它。在写入/读取该对象之前,需要先锁定/解锁该对象


可以这样做:

螺纹等级: 1.声明一个委托---公共委托void UPDATEVALUE(o_sender,字符串值); 2.声明委托类型的事件------public event UPDATEVALUE update; 3.无论我在哪里收到数据,都会引发此事件------更新(此,值)

主要类别:

  • 为我正在创建的每个线程添加事件-- Threadclass tc=新的Threadclass(); tc.update+=新Threadclass.UPDATEVALUE(DisplayValue)

  • 其中DisplayValue是MainClass中用于显示更新值的函数。

    如果您需要更具体的内容,您必须更新您的问题,并提供更多详细信息和一些代码。感谢您的回复。我想在这种情况下,我必须时刻监视我的对象。实际上,我想在单个线程收到数据的那一刻将数据发送到主类,因为我必须访问数据库,做出一些决定,然后响应回IP设备。我可以在这里使用委托-事件概念吗(在多线程的情况下)?谢谢Zoka。我通过使用委托事件处理来完成它。