【发布时间】:2017-08-09 01:52:23
【问题描述】:
假设我们有一个访问远程数据库的方法调用,大约需要 1 秒才能完成并返回 DataTable(模拟如下):
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;
}
从此方法返回的 DataTable 用于用单行系列填充 Chart。为什么这段代码显示正确、格式正确的 DateTime 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() 调用也可以解决此问题。
【问题讨论】:
标签: c# winforms asynchronous charts async-await