J'utilise les fonctions inline pour éviter la collecte des ordures pression spécialement lorsque vous traitez avec de plus en cours d'exécution des méthodes. Dire que l'on souhaite obtenir 2 ans, ou les données du marché pour un symbole. Aussi, on peut emballer beaucoup de fonctionnalités et une logique d'entreprise si l'on en a besoin.
ce que l'on ouvre une socket de connexion au serveur et en boucle sur les données de la liaison d'un événement pour un événement. On peut penser de la même manière qu'une classe est conçu, un seul n'est pas l'écriture de méthodes d'assistance partout qui sont vraiment seulement pour une pice de fonctionnalité. ci-dessous quelques exemples de la façon dont cela pourrait ressembler, veuillez noter que je suis à l'aide de variables et de l ' "aide" méthodes sont en dessous de la enfin. En la Finalement j'ai bien supprimer les gestionnaires d'événements, si je Change de classe serait externe/injectés je n'aurais aucune attente de gestionnaire d'événements registrated
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;
}
}
Vous pouvez voir les avantages, comme mentionné ci-dessous, vous pouvez voir ici un exemple de mise en œuvre. L'espoir qui aide à expliquer les avantages.