Angenommen wir einen Methodenaufruf haben, die eine Remote-Datenbank zugreift, ca. 1 Sekunde unter abzuschließen und eine DataTable
(simuliert unten) Rückkehr:C# Diagramm Achsenbeschriftungen nicht ordnungsgemäß Formatierung
DataTable GetData()
{
Thread.Sleep(1000); // simulated delay
var dt = new DataTable("DataTable");
dt.Columns.Add("DateTime", typeof(DateTime));
dt.Columns.Add("Value", typeof(double));
var rand = new Random();
var date = new DateTime(2016, 1, 1);
for (int i = 0; i < 1000; i++)
{
dt.Rows.Add(date, rand.NextDouble() * 100);
date = date.AddHours(12);
}
return dt;
}
Die Datentabelle von dieser Methode zurück wird verwendet, um eine Chart
mit einer einzelnen Zeilenserie zu füllen. Warum ist es, dass dieser Code korrekt zeigt, korrekt formatierte Datetime X-Achsenbeschriftungen:
async void MainForm_Load(object sender, EventArgs e)
{
var data = GetData();
chart.DataSource = data;
chart.DataBind();
}
und dieser Code zeigt falsche, unformatierte X-Achsen-Etiketten?
async void MainForm_Load(object sender, EventArgs e)
{
var data = await Task.Run(() => GetData());
chart.DataSource = data;
chart.DataBind();
}
Beachten Sie, dass die Thread.Sleep()
Anruf zu entfernen auch dieses Problem behebt, auch die zweite Version.