C# 后台线程lambda回调

C# 后台线程lambda回调,c#,C#,在后台线程完成时,它使用匿名lambda语句运行System.Action回调。我想知道如何重写下面的代码,使用一个已完成的函数生成callback/lambda语句 ViewModel:BaseViewModel public override void Initialize(System.Action onInitializeCallback = null) {..... BackgroundEntityWorker.RunWorkerCompleted += (sender, ar

在后台线程完成时,它使用匿名lambda语句运行System.Action回调。我想知道如何重写下面的代码,使用一个已完成的函数生成callback/lambda语句

ViewModel: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));
        }
    });
}
我想把它改成下面的东西

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,并维护回调。