Tôi sử dụng các hàm nội tuyến để tránh áp lực thu gom rác đặc biệt khi xử lý các phương thức chạy dài hơn. Giả sử một người muốn có được 2 năm hoặc dữ liệu thị trường cho một biểu tượng đánh dấu nhất định. Ngoài ra, người ta có thể đóng gói rất nhiều chức năng và logic kinh doanh nếu cần.
những gì người ta làm là mở một kết nối ổ cắm đến máy chủ và lặp qua dữ liệu liên kết một sự kiện với một sự kiện. Người ta có thể nghĩ về nó giống như một lớp được thiết kế, chỉ có một người không viết các phương thức trợ giúp ở khắp mọi nơi thực sự chỉ hoạt động cho một pice chức năng. dưới đây là một số ví dụ về cách nó có thể trông như thế nào, xin lưu ý rằng tôi đang sử dụng các biến và các phương thức "trợ giúp" ở dưới cuối cùng. Cuối cùng, tôi loại bỏ các trình xử lý sự kiện một cách độc đáo, nếu lớp Exchange của tôi sẽ ở bên ngoài / được tiêm, tôi sẽ không có bất kỳ trình xử lý sự kiện đang chờ xử lý nào được đăng ký
void List<HistoricalData> RequestData(Ticker ticker, TimeSpan timeout)
{
var socket= new Exchange(ticker);
bool done=false;
socket.OnData += _onData;
socket.OnDone += _onDone;
var request= NextRequestNr();
var result = new List<HistoricalData>();
var start= DateTime.Now;
socket.RequestHistoricalData(requestId:request:days:1);
try
{
while(!done)
{ //stop when take to long….
if((DateTime.Now-start)>timeout)
break;
}
return result;
}finally
{
socket.OnData-=_onData;
socket.OnDone-= _onDone;
}
void _OnData(object sender, HistoricalData data)
{
_result.Add(data);
}
void _onDone(object sender, EndEventArgs args)
{
if(args.ReqId==request )
done=true;
}
}
Bạn có thể thấy những lợi thế như được đề cập dưới đây, ở đây bạn có thể thấy một triển khai mẫu. Hy vọng rằng sẽ giúp giải thích những lợi ích.