如何在不阻塞用戶界面的情況下每隔幾秒使用任務異步等待來運行任務。以下是我使用計時器的示例。我能夠每隔幾秒運行一次功能,但它阻止了用戶界面。有人可以幫助我,我是新來的異步編程。在後臺每隔幾秒鐘運行一次函數,不會阻塞用戶界面c#
private void Form1_Load(object sender, EventArgs e)
{
gridControl1.DataSource = GetData();
timer.Interval = 5000;
timer.Tick += new EventHandler(MyTimer_Tick);
timer.Start();
}
private void MyTimer_Tick(object sender, EventArgs e)
{
gridControl1.DataSource = GetData();
gridControl1.RefreshDataSource();
}
DataTable GetData()
{
DataTable dt = new DataTable();
dt.Columns.Add("Value1", typeof(int));
dt.Columns.Add("Value2", typeof(int));
dt.Columns.Add("Value3", typeof(int));
dt.Columns.Add("Value4", typeof(int));
dt.Columns.Add("Value5", typeof(int));
dt.Columns.Add("Value6", typeof(int));
dt.Columns.Add("Value7", typeof(int));
dt.Columns.Add("Value8", typeof(int));
dt.Columns.Add("Value9", typeof(int));
dt.Columns.Add("Value10", typeof(int));
dt.Columns.Add("Value11", typeof(int));
dt.Columns.Add("Value12", typeof(int));
Random rnd = new Random();
for (int i = 1; i < 1000000; i++)
{
dt.Rows.Add(rnd.Next(1, 100), rnd.Next(1, 100), rnd.Next(1, 100),
rnd.Next(1, 100), rnd.Next(1, 100), rnd.Next(1, 100), rnd.Next(1, 100), rnd.Next(1, 100), rnd.Next(1, 100),
rnd.Next(1, 100), rnd.Next(1, 100), rnd.Next(1, 100));
}
return dt;
}
您正在使用什麼版本的C#? –
@RJProgrammer - 我正在使用版本4.6 – user