C# &引用;某些参数或凭据尚未指定";当更新LocalReport参数并刷新它时——仅当快速完成时--

C# &引用;某些参数或凭据尚未指定";当更新LocalReport参数并刷新它时——仅当快速完成时--,c#,.net,winforms,asynchronous,reporting-services,C#,.net,Winforms,Asynchronous,Reporting Services,我有一个WinForm(MVP)应用程序,其中我必须在ReportViewer中显示一个LocalReport,并使用一些textbox/numericUpDown更新它 LocalReport只需要参数,每个输入都会设置一个参数 这是我在以下表单中设置LocalReport的代码: public LocalReport ReportToShow { set { //http://stackoverflow.com/questio

我有一个WinForm(MVP)应用程序,其中我必须在ReportViewer中显示一个LocalReport,并使用一些textbox/numericUpDown更新它

LocalReport只需要参数,每个输入都会设置一个参数

这是我在以下表单中设置LocalReport的代码:

 public LocalReport ReportToShow
    {
        set
        {
            //http://stackoverflow.com/questions/9200308/vs2010-rdlc-c-how-can-i-set-a-localreport-object-to-a-reportviewer
            //assign report Path
            reportViewer.LocalReport.ReportPath = value.ReportPath;

            //get a list of actual parameters in the report, with the value set @ String.Empty
            var newParams = value.GetParameters().Select(t => new ReportParameter(t.Name, String.Empty)).ToList();

            reportViewer.LocalReport.SetParameters(newParams);



            //show the report for the first time
            reportViewer.RefreshReport();
        }
    }
这是导致异常的代码,有时(将在下面解释):

private void UpdateParam(String name, String value)
    {
        reportViewer.LocalReport.SetParameters(new[] {new ReportParameter(name, value)});
        reportViewer.LocalReport.Refresh();
    }
此方法绑定到我的输入的TextChanged/ValueChanged事件。基本上,每次输入更改时,报告都会刷新

这是一个例外:

请注意,报告现在只有两个参数,并且两个参数都已设置。不需要数据源

为什么有时候

  • 该异常在我第一次显示表单时抛出,因为我编程更新textbox/numericupdown,并且事件“快速”触发
  • 当我在同一时间键入2个笔划时,甚至当我键入得非常快时,都会引发异常
  • 当我在输入中正常键入时,不会引发异常
我的想法是reportViewer.RefreshReport()在内部是异步的,当在完成之前触发事件时,它将导致异常

您可能感兴趣的其他事项:

  • 堆栈跟踪:
  • 即使引发异常,报告也会正确呈现
调试正在变成地狱,有什么建议吗?谢谢

在花了一段时间解决这个问题后,我“解决”了这个问题:当用户更改一些输入时,只更新数据结构(字典),只有当某些内容更改时,才使用计时器刷新报告

看来250ms是计时器的合理间隔

丑陋的。。。但这是可行的,问题变得令人沮丧