有人可以帮助我,我有一种方法,我称之为“激活”回调方法(设置为每秒发送一次更改的数据)和第二种方法(首先是“激活”),每秒运行一次给我数据。这一切都很好,但我需要第二种方法在新线程中运行,经过几天的尝试和阅读后,我无法做到这一点。有人可以指导我怎么做吗?这是我的代码。
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;
}
答案 0 :(得分: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;
});
}
但是为什么要异步运行呢?
从您显示的代码中,并行运行没有任何好处。