Tom*_*oll 2 .net c# winforms task-parallel-library async-await
我有一个WinForms应用程序有两种形式.在第一个表单上,用户输入一些信息并单击下一个按钮,这会隐藏form1,加载form2并触发一个任务(其功能在form1上),从数据库加载数据.
我想要做的是在第二个表单上有一个文本框,在任务运行时显示"正在加载数据",然后在任务完成时返回行的计数.一直允许用户继续在form2上输入数据.
这是我第一次尝试使用任务async而且我正在努力找到一种方法来做到这一点.
Task emailTask = new Task(() => FindCustomersForEmail(reg.Index));
emailTask.Start();
MessageControl formMessageControl = new MessageControl();
formMessageControl.Show();
this.Hide();
Run Code Online (Sandbox Code Playgroud)
我头脑中的东西是这样的:
while (emailTask not complete)
{
txtEmailCount.Text = "Loading";
}
txtEmailCount.Text = customersToEmail.Rows.Count.ToString();
Run Code Online (Sandbox Code Playgroud)
为什么不直接await对Task?
// Note this is void because I'm assuming it's an event handler.
// If it isn't this should be `async Task` instead.
public async void FindCustomersAsync()
{
txtEmailCount.Text = "Loading";
await Task.Run(() => FindCustomersForEmail(reg.Index));
txtEmailCount.Text = customersToEmail.Rows.Count.ToString();
}
Run Code Online (Sandbox Code Playgroud)
旁注 - 更喜欢使用Task.Run而不是手动启动Task.
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |