Чтение данных обратного вызова в новой теме C#

Может ли кто-нибудь мне помочь, у меня есть один метод, который я вызываю, чтобы "активировать" метод обратного вызова (который настроен на отправку мне измененных данных каждую секунду) и второй метод (который "активируется" первым), который запускается каждую секунду и дает мне данные, Это все хорошо, но мне нужно, чтобы второй метод запускался в новом потоке, и после пары дней попыток и чтения я не смог это сделать. Может кто-нибудь подсказать мне, как это сделать? вот мой код

    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;
    } 

1 ответ

Решение

Нечто подобное может быть:

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;
   });
} 

?

Но почему вы хотите запустить его асинхронно?

Из кода, который вы показываете, ничего не выиграет от параллельной работы.

Другие вопросы по тегам