如何从Prism事件聚合器订阅者中调用异步方法?

时间:2016-06-09 12:09:09

标签: c# asynchronous prism

快速提问 - 如何在Prism事件聚合器订阅者操作​​中调用异步方法? E.g。

_eventAggregator.GetEvent<PubSubEvent<SomeMessage>>()
   .Subscribe((msg) => {
                       DoSomething();
                       await DoSomethingAsync();
                       DoSomethingElse();
                    });

2 个答案:

答案 0 :(得分:1)

使用当前的Prism实现,不可能see here

但是我发现了Prism EventAggregator的替代实现,该实现允许2.3.3 :001 > my_obj = { "name" => "name", "surname" => "surname" } 2.3.3 :002 > my_obj.delete("surname") 2.3.3 :003 > my_obj => {"name"=>"name"} 订阅。参见here

此新事件异步聚合器重载可以与原始事件重载相同的方式使用:

事件订阅与另一个过载完全相同:

function getRiskRate(z){
    var z=document.getElementById("Risk_rating").value;
        return(z);

}
getRiskRate();

function Rate(z){
    var z=document.getElementById("Risk_rating").value;
    getRiskRate();
        if(z>1 || z<=2){
            document.getElementById('mySeverity').value='Low';
            } else if(z>2 || z<=6){
                document.getElementById('mySeverity').value='Medium';
                } else if (z>6 || z<=9){
                    document.getElementById('mySeverity').value='High';
                        }else{
                            document.getElementById('mySeverity').value='value not defined';
                        }
}
Rate();

事件处理程序:

async

答案 1 :(得分:0)

让@Charles Mager回答

_eventAggregator.GetEvent<PubSubEvent<SomeMessage>>()
   .Subscribe(async(msg) => {
                       DoSomething();
                       await DoSomethingAsync();
                       DoSomethingElse();
                    });