vb.net如何将对一个结构的引用从一个线程传递给另外两个线程?

时间:2019-06-28 15:37:25

标签: vb.net multithreading

线程1填充一个结构,然后启动线程2和3,每个线程都需要引用相同的结构才能使用它。
无法复制结构-它很大,会花费太长时间,因为结构中的帧数组每个都很大-可能每个25KB。

启动线程时将结构引用传递给线程2和3时,当前代码出错。

如何为线程2和3提供对线程1创建的结构的引用?

代码...

        Structure Antenna_Frame_Buffer_structure
            dim frame_buffer_index          as integer
            dim board0_frame_array             as Byte()
            dim board1_frame_array             as Byte()
            dim board2_frame_array             as Byte()
            dim need_to_write               as boolean
            dim write_done_flag            as boolean
        end structure

        dim     antenna_frame_buffer as Antenna_Frame_Buffer_structure
            ...

    ' ONE THREAD STARTS TWO OTHER THREADS.................
            new_buffer_write_thread = new Thread( AddressOf thread1 )
            new_buffer_write_thread.Start( antenna_frame_buffer )   
            new_buffer_write_thread = new Thread( AddressOf thread2 )
            new_buffer_write_thread.Start( antenna_frame_buffer )   

            ...


    'EACH OF OTHER TWO THREADS NEEDS TO REFERENCE SAME STRUCTURE.....
sub thread1( ByRef antenna_frame_buffer as Antenna_Frame_Buffer_structure ) 
            ...
end sub

sub thread2( ByRef antenna_frame_buffer as Antenna_Frame_Buffer_structure ) 
            ...
end sub

错误

  

严重性代码描述项目文件行抑制状态错误   BC30518重载解析失败,因为无法访问“新”   使用以下参数调用:'Public Overloads Sub New(start As   ThreadStart)':方法'Public Sub frame_buffer_write_Thread(ByRef   enna_frame_buffer为   Embedded_Communication_Interface.Antenna_Frame_Buffer_structure)'   没有与委托'Delegate Sub兼容的签名   ThreadStart()'。 '公共重载子新建(开始为   ParameterizedThreadStart)':方法'Public Sub   frame_buffer_write_Thread(ByRef Antenna_frame_buffer为   Embedded_Communication_Interface.Antenna_Frame_Buffer_structure)'   没有与委托'Delegate Sub兼容的签名   ParameterizedThreadStart(obj As Object)'。 SYS HUB和HW GUI   C:\ PRIMARY \ WORK \ SYSTEM HUB \ SOURCE \ Embedded_Communication_Interface.vb   1030有效

0 个答案:

没有答案