首页 新闻 会员 周边

C# winform 关于async和await 实际用法过程中,偶尔报错问题

0
[已解决问题] 解决于 2020-10-21 15:13

上图是在反复不停对修改信息窗体后,调用下图方法后,偶尔会报错

问题补充:

反复(快速)不停修改不同记录,偶尔(较多情况下),会出错上面的错误提示,请问这个是哪里的原因呢?再有就是我用异步去调数据,如果是启用了调试跟踪,会提示控件不是由线程创建,无法调试?这个又怎么解决异步方法中,给控件绑定数据,调试呢

狼图腾TOP的主页 狼图腾TOP | 菜鸟二级 | 园豆:322
提问于:2020-10-21 13:30
< >
分享
最佳答案
0

用法就不太对..., 对控件的访问应该是同步的.

async void button_click_handler(){
    await bindBaseEmployList(); //比如说,点击一个按钮就load数据.
}

async Task bindBaseEmployList(){
    doWaiting w=new...;
    w.ShowMessage(); //sync show.

    var ds = await getDataAsync(emp); //async load datas.

    this.gridControll.DataSource = ds; //sync set to winform control.
}
奖励园豆:5
czd890 | 专家六级 |园豆:14412 | 2020-10-21 13:47

十分感谢,终于没有错误提示了!第一次写异步,好多年没写程序了,还是自己内部要使用的一个应用,才重拾代码

狼图腾TOP | 园豆:322 (菜鸟二级) | 2020-10-21 15:14
其他回答(1)
0

从异常信息来看,可能是绘制行(DrawRow)事件中出现了问题,从上面代码来看,有可能是focusedRowHandle方法内部有问题,像这样的空异常,简单的可以通过判断是否为null输出到输出窗口进行诊断

if(obj==null)
{
   Console.WriteLine(信息);
}
E行者 | 园豆:1761 (小虾三级) | 2020-10-21 13:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册