假設我們有訪問遠程數據庫中的一個方法調用,以大約1秒,完成並返回一個DataTable
(模擬下面):C#圖表軸標籤未格式化正確
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;
}
的數據表從該方法返回用於用單行系列填充Chart
。爲什麼這個代碼顯示正確,正確格式的日期時間x軸標籤:
async void MainForm_Load(object sender, EventArgs e)
{
var data = GetData();
chart.DataSource = data;
chart.DataBind();
}
和驗證碼顯示不正確,未格式化的X軸標籤?
async void MainForm_Load(object sender, EventArgs e)
{
var data = await Task.Run(() => GetData());
chart.DataSource = data;
chart.DataBind();
}
注意去除Thread.Sleep()
調用也修正了這個問題,即使使用第二個版本。