因为子窗体加载的数据查询较慢,如果不用异步的话, 直到子窗体的数据加载完毕才会跳出窗体,这样想在父窗体加入 加载中的控件不好实现
而在子窗体内加入加载中的标识控件就相对容易了
仅仅在子窗体内用Form_Shown load没用异步的话是不行的,要用
await Task.Run(() =>. 并且 下边的异步中还不能加入控件直接赋值,会出现线程无法找到问题,而变量没问题 使用invote 也是不行的. await 意思是等待异步,但不会导致主线程卡掉.
uiWaitingBar1.Visible = true; await Task.Run(() => { infos= server.GetData(xxx); }); uiWaitingBar1.Visible = false; datagridview.DataSource = detailsinfos;
异步方法写法 带返回整型
public static async Task<int> UpdateAsync(string _packageFileName, string ProgramDirectoryName) { int count = 0; await Task.Run(() => { count = Update(_packageFileName, ProgramDirectoryName); }); return count; }
调用
int result = await UpdateAsync(uiTextBox1.Text.Trim(), lc[i].FileDirectory);
https://zhuanlan.zhihu.com/p/543188031
技术交流qq群:143280841