C# 后台线程lambda回调
在后台线程完成时,它使用匿名lambda语句运行System.Action回调。我想知道如何重写下面的代码,使用一个已完成的函数生成callback/lambda语句 ViewModel:BaseViewModelC# 后台线程lambda回调,c#,C#,在后台线程完成时,它使用匿名lambda语句运行System.Action回调。我想知道如何重写下面的代码,使用一个已完成的函数生成callback/lambda语句 ViewModel:BaseViewModel public override void Initialize(System.Action onInitializeCallback = null) {..... BackgroundEntityWorker.RunWorkerCompleted += (sender, ar
public override void Initialize(System.Action onInitializeCallback = null)
{.....
BackgroundEntityWorker.RunWorkerCompleted += (sender, args) =>
{
If (onInitializeCallback != null)
{
onInitializeCallback();
}
};
.....
}
public virtual void Reload(int? id = null, Action<T> callback = null)
{
Initialize(() =>
{
Localize();
if (id == null)
{
IndicateLoading(false);
}
else
{
Load(id.Value, () => IndicateLoading(false));
}
});
}
我想把它改成下面的东西
BackgroundEntityWorker.RunWorkerCompleted += BackgroundWorker_Completed =>
{
If (onInitializeCallback != null)
{
onInitializeCallback();
}
};
BaseViewModel
public override void Initialize(System.Action onInitializeCallback = null)
{.....
BackgroundEntityWorker.RunWorkerCompleted += (sender, args) =>
{
If (onInitializeCallback != null)
{
onInitializeCallback();
}
};
.....
}
public virtual void Reload(int? id = null, Action<T> callback = null)
{
Initialize(() =>
{
Localize();
if (id == null)
{
IndicateLoading(false);
}
else
{
Load(id.Value, () => IndicateLoading(false));
}
});
}
但是我丢失了回调,我如何设置它以使BackGroundWorker_完成并维护我的回调
BackgroundEntityWorker.RunWorkerCompleted += (sender, args) =>
{
If (onInitializeCallback != null)
{
onInitializeCallback();
}
}
但是要小心BackgroundEntityWorker
null访问
public override void Initialize(System.Action onInitializeCallback = null)
{
If (BackgroundEntityWorker.RunWorkerCompleted != null)
{
BackgroundEntityWorker.RunWorkerCompleted();
}
}
您正在重定向两次事件。如果你能展示一下你的整个活动是如何进行的,那对我们来说就容易多了
但是要小心BackgroundEntityWorker
null访问
public override void Initialize(System.Action onInitializeCallback = null)
{
If (BackgroundEntityWorker.RunWorkerCompleted != null)
{
BackgroundEntityWorker.RunWorkerCompleted();
}
}
您正在重定向两次事件。如果你能展示你的整个活动是如何失去我的,那对我们来说就容易多了。你试图给它发送两个回调函数…有点像。我得不到你想要的。你想使用命名方法作为回调吗?目前我不确定你所说的“使用已完成函数生成回调/lambda语句”是什么意思,你的示例对我来说没有任何意义。只需传递你要使用的委托即可。将整个lambda替换为delete的名称(您的另一个回调函数)。BackgroundWorker_Completed是什么?这就是编译器错误所指的内容。很抱歉造成混淆,我正在尝试将线程completed设置为我的Backgroundworker_completed,并维护我的回调。您丢失了我。你试图给它发送两个回调函数…有点像。我得不到你想要的。你想使用命名方法作为回调吗?目前我不确定你所说的“使用已完成函数生成回调/lambda语句”是什么意思,你的示例对我来说没有任何意义。只需传递你要使用的委托即可。将整个lambda替换为delete的名称(您的另一个回调函数)。BackgroundWorker_Completed是什么?这就是编译器错误所指的内容。很抱歉造成混淆,我正在尝试将线程completed设置为Backgroundworker_completed,并维护回调。