我是一个有用的助手,可以进行文本翻译。以下是需要翻译的内容:
这个程序在BackgroundWorker进程中运行,当字典项数达到2500时,使用二进制序列化进行深度克隆,然后清除并启动另一个后台进程,将克隆副本插入到数据库中。一旦字典被清除,订单就会再次插入。因此,我正在尝试尽可能多地接收并分批插入到数据库中。
我试图用类似的方法处理历史数据。没有唯一的ID,唯一性来自
我需要一种快速的方法从这3个值生成一个唯一的键,以便像订单一样存储在字典中,或者使用另一种存储和过滤数据的方法。
有什么建议吗?我针对.NET 4.0。
我正在解析一个在线网络数据源(TCP 中继),每秒发送约30-50条信息(300-500行数据)。这些信息包含两种类型: 订单 和历史数据。
因此,对于订单,每个订单都有一个唯一的ID,并且我已经得到了:
private static Dictionary<long,MarketOrder> MarketOrders = new Dictionary<long,MarketOrder>();
我将订单按照它们的顺序插入到系统中。数据来自缓存文件,因此消息可能包含旧数据,需要进行过滤。目前我的做法是:
if (MarketOrders.ContainsKey(order.OrderID))
{
// If record exists in a dictionary add hits and overwrite the object if newer.
int hits = MarketOrders[order.OrderID].Hits;
if (MarketOrders[order.OrderID].LastUpdated < order.LastUpdated)
{
MarketOrders[order.OrderID] = order;
}
MarketOrders[order.OrderID].Hits = hits + 1;
}
else
{
// If not, add new one
order.Hits = 1;
MarketOrders.Add(order.OrderID, order);
}
这个程序在BackgroundWorker进程中运行,当字典项数达到2500时,使用二进制序列化进行深度克隆,然后清除并启动另一个后台进程,将克隆副本插入到数据库中。一旦字典被清除,订单就会再次插入。因此,我正在尝试尽可能多地接收并分批插入到数据库中。
我试图用类似的方法处理历史数据。没有唯一的ID,唯一性来自
<int, int, DateTime>
值的组合。我需要一种快速的方法从这3个值生成一个唯一的键,以便像订单一样存储在字典中,或者使用另一种存储和过滤数据的方法。
有什么建议吗?我针对.NET 4.0。