在Lambpatcher.Invoke()中使用lambda表达式作为参数

vkl*_*vet 8 lambda expression dispatcher c#-4.0

我有这样的问题:有一些方法

private List<int> GetStatusList()
        {
            return (List<int>)GetValue(getSpecifiedDebtStatusesProperty);
        }
Run Code Online (Sandbox Code Playgroud)

在主线程中调用它 - 我使用

`delegate List<int> ReturnStatusHandler();` ...

this.Dispatcher.Invoke(new ReturnStatusHandler(GetStatusList));
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做,使用lambda表达式而不是自定义委托和方法?

Moh*_*bed 14

你可以通过这个:

new Action(GetStatusList)
Run Code Online (Sandbox Code Playgroud)

要么

(Action)(() => { GetStatusList; })
Run Code Online (Sandbox Code Playgroud)


gls*_*123 7

您可以通过创建一个简单的方法来避免显式转换:

void RunInUiThread(Action action)
{
     Dispatcher.Invoke(action);
}
Run Code Online (Sandbox Code Playgroud)

使用如下:

RunInUiThread(() =>
{
     GetStatusList();
});
Run Code Online (Sandbox Code Playgroud)