我有一些调用操作(全部不同),我需要根据存储在 an 中ObservableCollection
并返回字符串/int 值的用户选择的项目来调用它们。
Now when the selection is only one item it is straight forward, I can call and use the Completed
event and get my return value.
我在列表中有大约 <= 8 个项目,我需要对其进行迭代并执行invoke
操作。
我看到foreach
不会真正等待InvokeOperation
完成,而是不断迭代直到列表末尾,使它们并行运行......有点......
如何一次只执行一个操作并仅在前一个操作完成时迭代(无论结果如何)?
InvokeOperations 的 1 对 1 执行是我正在寻找的..任何线索,提示..?
如果我不清楚,请告诉我。
干杯。
编辑:InvokeOperation
(s)彼此不同。他们每个人都在数据库上执行不同的操作,这可能很耗时。研究以 1-1 执行它们的主要原因是使用每个人的输出(成功/失败)更新用户屏幕,而不是一次完成所有操作.
//Pseudo-code
foreach (var item in SelectedItems)
{
var id = item.ID;
switch(id)
{
case: 1
InvokeOperataion<int> inv = context.PerformUpdateFor_1(item);
inv.Completed += (s,a) => {
//get the value assign it to Textblock.
};
break;
case: 2
InvokeOperataion<int> inv = context.PerformUpdateFor_2(item);
inv.Completed += (s,a) => {
//get the value assign it to Textblock.
};
break;
//Other cases similar to this
}
}