0

有人可以帮我吗,我有一种方法可以调用“激活”回调方法(设置为每秒向我发送更改的数据)和第二种方法(首先“激活”)每秒运行一次并给我数据. 这很好,但我需要在新线程中运行第二种方法,经过几天的尝试和阅读,我无法做到这一点。有人可以指导我怎么做吗?这是我的代码。

    int ItemNumItems;
    Array ItemClientHandles;
    Array ItemServerValues;
    Array ItemQualities;
    Array ItemTimeStamps;

    public void Callback()
    {
        //Here I add a delegate with method to be called on data change.

        Grupa1.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(Grupa1_DataChange);
    }

    void Grupa1_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps)
    {
        //Here I read my data and pass them to my variables(and this is 
        //runned every second) and I want this method to run in new thread.

        ItemNumItems = NumItems;
        ItemClientHandles = ClientHandles;
        ItemServerValues = ItemValues;
        ItemQualities = Qualities;
        ItemTimeStamps = TimeStamps;
    } 
4

1 回答 1

0

可能是这样的:

void Grupa1_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps)
{
    Array tmpClientHandles = ClientHandles;
    Array tmpItemValues = ItemValues;
    Array tmpQualities = Qualities;
    Array tmpTimeStamps = TimeStamps;

    ThreadPool.QueueUserWorkItem(o =>
    {
        //Here I read my data and pass them to my variables(and this is 
        //runned every second) and I want this method to run in new thread.

        ItemNumItems = NumItems;
        ItemClientHandles = tmpClientHandles;
        ItemServerValues = tmpItemValues;
        ItemQualities = tmpQualities;
        ItemTimeStamps = tmpTimeStamps;
   });
} 

?

但是你为什么要异步运行它呢?

从您显示的代码来看,并行运行没有任何好处。

于 2013-06-13T23:36:53.993 回答