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

2020-10-21 14:42发布

问题:

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

回答1:

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

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.
}


回答2:

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

if(obj==null)
{
   Console.WriteLine(信息);
}