1
当我的后台线程完成时,它使用匿名lambda语句运行System.Action回调。我想知道如何重写下面的代码,以使用Completed函数进行回调/ lambda语句。后台线程lambda回调
视图模型:BaseViewModel
public override void Initialize(System.Action onInitializeCallback = null)
{.....
BackgroundEntityWorker.RunWorkerCompleted += (sender, args) =>
{
If (onInitializeCallback != null)
{
onInitializeCallback();
}
};
.....
}
我想改变它的东西下面
BackgroundEntityWorker.RunWorkerCompleted += BackgroundWorker_Completed =>
{
If (onInitializeCallback != null)
{
onInitializeCallback();
}
};
BaseViewModel
public virtual void Reload(int? id = null, Action<T> callback = null)
{
Initialize(() =>
{
Localize();
if (id == null)
{
IndicateLoading(false);
}
else
{
Load(id.Value,() => IndicateLoading(false));
}
});
}
我得到一个错误Argument type 'Lambda expression
是不能分配给参数类型System.ComponentModel.RunWorkerCompletedEventHandler
我试图
BackgroundEntityWorker.RunWorkerCompleted += BackgroundWorker_Completed;
,但我失去了我的回调,我该如何设置它有BackGroundWorker_Completed和维护我的回调?
你失去了我。你正在试图发送两个回调函数......有点。我没有得到你想要的东西。 – Jonesopolis
您是否尝试使用命名方法作为回调?目前我不确定你的意思是“用回调/ lambda语句使用Completed函数”,你的例子对我来说没有任何意义。 – Chris
只需传递您打算使用的代表。将整个lambda替换为delete的名称(您的其他回调函数)。 – ryanyuyu