WinForm C#中的列表变量

时间:2011-07-11 18:56:20

标签: c# list static

我还在学习C#.Net 4,这是我的第一个WinForms,所以请善待。

继续我的项目,我的财务DataFeed通过使用'异步套接字?'流入我的应用程序。无论如何,我得到的数据是每个tick数据的滴答,这基本上是1个订单/交易。所以现在我需要使用勾选数据来构建条形图,特别是范围条。

我的问题是我不想去数据库并获取这些数据,因此我希望在内存中执行此操作,如列表变量。最终,主服务器上的这个系统将执行所有数字运算等...并将通过套接字连接客户端,以便在即将到来的数据中查询或设置自己的预定义算法,并使用不同的范围和指标构建自己的图表。 / p>

我不想将其卸载到客户端,因为我希望保持指标技术专有。

我将如何实施此目标?

我已经有了名为Tick的课程

class Tick
{
    public double Last { get; set; }
    public double Bid { get; set; }
    public double Ask { get; set; }
    public double BidSize { get; set; }
    public double AskSize { get; set; }
    public DateTime TimeStampInternal { get; set; }
    public int DTNTickID { get; set; }
    public int UpdateTypeID { get; set; }
} 

我在考虑

Static List<Tick> Ticks 

但我不认为这是要走的路,因为

  1. 我需要能够只保留一定数量的滴答声,当新数据进入时,旧数据会被丢弃,FIFO会降低内存使用率。
  2. 我只能容纳1个静态列表,我需要一些动态的东西,例如:为每个连接的用户提供一个List,只有这些用户可以识别。
  3. 请帮助我正确地设计这个,并提供速度和效率的最佳实践。

2 个答案:

答案 0 :(得分:1)

听起来像circular buffer就是你要找的。

http://circularbuffer.codeplex.com/

或许是queue.

答案 1 :(得分:0)

我希望我能正确理解你想要的东西,所以这里非常伪代码

public class User {

     private UserTickList<Tick> _userTicks = new UserTickList<Tick>();

     public void AddUserTick(Tick t) {
              _userTicks.Add(t);
     }

     /*remove, update if need*/
}

 public class UserTickList {

    private List<Tick> _list = new List<Tick>();

    public void AddTick(Tick tick) {
         if(_list.Count == 10){
               /*perform what you need*/
         }
         else 
           _list.Add(tick);
    }
 }

我重复这个可能不会编译,只是想知道它看起来像什么。

希望这有帮助。