尝试此操作时出现此错误:
预期的ERROR方法名称。
我该怎么做才能解决问题
delegate void DelegateFillList(DeliveryDoc[] deliveryDocs);
private void FillListViewAssignment(DeliveryDoc[] docs) {
if(lvMyAssignments.Dispatcher.CheckAccess()) {
lvMyAssignments.ItemsSource = docs;
lvAllOngoingAssignments.ItemsSource = docs;
if(m_tempDeliveryDocs != null) {
txtblockHandOverCount.Text = m_tempDeliveryDocs.Length.ToString();
}
} else {
lvMyAssignments.Dispatcher.BeginInvoke(
new DelegateFillList(FillListViewAssignment(docs)), null);
}
}
答案 0 :(得分:4)
这是问题所在:
new DelegateFillList(FillListViewAssignment(docs)
您不能以这种方式创建委托。您需要提供方法组,它只是方法的名称:
lvMyAssignments.Dispatcher.BeginInvoke
(new DelegateFillList(FillListViewAssignment), new object[]{docs});
或者,您可以用两个语句来完成:
DelegateFillList fillList = FillListViewAssignment;
lvMyAssignments.Dispatcher.BeginInvoke(fillList, new object[]{docs});
额外“换行”数组的原因是你只有一个参数,这是一个数组 - 你不希望它试图把它解释为一堆不同的参数。
答案 1 :(得分:2)
将最后一行更改为:
lvMyAssignments.Dispatcher.BeginInvoke(
new DelegateFillList(FillListViewAssignment), docs);
答案 2 :(得分:1)
我认为你必须在else部分指定参数..
试试这个:
lvMyAssignments.Dispatcher.BeginInvoke(new DelegateFillList(FillListViewAssignment), new object[]{docs});
已编辑 - 已包含new object[]{docs}
。感谢Jon和Henk
答案 3 :(得分:0)
这一行:
lvMyAssignments.Dispatcher.BeginInvoke(
new DelegateFillList(FillListViewAssignment(docs)), null);
请注意,您将方法调用传递给委托,而不是方法名称。将其更改为:
lvMyAssignments.Dispatcher.BeginInvoke(
new DelegateFillList(FillListViewAssignment), null);
^
|
+- removed (docs)