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

时间:2011-10-10 08:54:24

标签: c#-4.0 lambda expression dispatcher

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

private List<int> GetStatusList()
        {
            return (List<int>)GetValue(getSpecifiedDebtStatusesProperty);
        }

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

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

this.Dispatcher.Invoke(new ReturnStatusHandler(GetStatusList));

如何使用lambda表达式代替自定义委托和方法?

2 个答案:

答案 0 :(得分:13)

你可以通过这个:

new Action(GetStatusList)

(Action)(() => { GetStatusList; })

答案 1 :(得分:7)

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

void RunInUiThread(Action action)
{
     Dispatcher.Invoke(action);
}

使用如下:

RunInUiThread(() =>
{
     GetStatusList();
});