Чтение данных обратного вызова в новой теме 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;
});
}
?
Но почему вы хотите запустить его асинхронно?
Из кода, который вы показываете, ничего не выиграет от параллельной работы.