Saya menggunakan fungsi sebaris untuk menghindari tekanan pengumpulan sampah secara khusus ketika berhadapan dengan metode yang berjalan lebih lama. Katakanlah seseorang ingin mendapatkan 2 tahun atau memasarkan data untuk simbol ticker yang diberikan. Juga, seseorang dapat mengemas banyak fungsionalitas dan logika bisnis jika diperlukan.
apa yang dilakukan adalah membuka koneksi soket ke server dan mengulangi data yang mengikat suatu peristiwa ke suatu peristiwa. Seseorang dapat memikirkannya dengan cara yang sama seperti kelas dirancang, hanya satu yang tidak menulis metode pembantu di semua tempat yang benar-benar hanya berfungsi untuk satu fungsi saja. di bawah ini adalah beberapa contoh bagaimana ini terlihat, harap dicatat bahwa saya menggunakan variabel dan metode "pembantu" di bawah yang terakhir. Pada akhirnya saya dengan baik menghapus event handler, jika kelas Exchange saya akan eksternal / disuntikkan saya tidak akan memiliki pendaftar event pending yang terdaftar
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;
}
}
Anda dapat melihat keuntungan seperti yang disebutkan di bawah ini, di sini Anda dapat melihat contoh implementasi. Harapan itu membantu menjelaskan manfaatnya.