Schreibdatei muss für starken Datenverkehr optimiert werden
Ich bin sehr neu in C #, und dies ist meine erste Frage, bitte seien Sie sanft zu mir
Ich versuche, eine Anwendung zu schreiben, um einige Tick-Daten vom Datenprovider zu erfassen. Nachfolgend ist der Hauptteil des Programms aufgeführt
void zf_TickEvent(object sender, ZenFire.TickEventArgs e)
{
output myoutput = new output();
myoutput.time = e.TimeStamp;
myoutput.product = e.Product.ToString();
myoutput.type = Enum.GetName(typeof(ZenFire.TickType), e.Type);
myoutput.price = e.Price;
myoutput.volume = e.Volume;
using (StreamWriter writer = File.AppendText("c:\\log222.txt"))
{
writer.Write(myoutput.time.ToString(timeFmt) + ",");
writer.Write(myoutput.product + "," );
writer.Write(myoutput.type + "," );
writer.Write(myoutput.price + ",");
writer.Write(myoutput.volume + ",");
}
Ich habe die Daten erfolgreich in die Textdatei geschrieben, aber ich weiß, dass diese Methode in der Spitzenzeit 10000-mal pro Sekunde aufgerufen wird, und eine Datei zu öffnen und viele Male pro Sekunde anzuhängen ist sehr ineffizient. Ich wurde darauf hingewiesen, a zu verwenden Buffer oder so, aber ich habe keine Ahnung, wie es geht. Ich versuche das Dokument zu lesen, aber ich verstehe es immer noch nicht. Deshalb wende ich mich hier an, um Hilfe zu bekommen.
Bitte gib mir einen (funktionierenden) Code, damit ich auf die Schreibrichtung zeigen kann. Vielen Dank
EDIT: Ich habe den Code so weit wie möglich vereinfacht
using (StreamWriter streamWriter = File.AppendText("c:\\output.txt"))
{
streamWriter.WriteLine(string.Format("{0},{1},{2},{3},{4}",
e.TimeStamp.ToString(timeFmt),
e.Product.ToString(),
Enum.GetName(typeof(ZenFire.TickType), e.Type),
e.Price,
e.Volume));
}
ED hat mir gesagt, ich soll meinen Stream in ein Feld stellen. Wie sieht die Syntax aus? Kann jemand einen Code posten, der mir hilft? Danke vielmals