我在WPF应用程序中得到了这段代码。
public void NotifyEntityUpdated(int userId, int entityId)
{
Action currentAction = () =>
{
EntityUpdatedByUser(userId, entityId);
SendEmail(userId, entityId);
};
this.Dispatcher.BeginInvoke(currentAction);
}
如何在.net 4中异步执行它?
我认为我不能像这样使用async / await ......
public async Task<T> DoSomethingAsync<T>(Func<T, Task> resultBody) where T : Result, new()
{
T result = new T();
await resultBody(result);
return result;
}
有任何线索吗?
答案 0 :(得分:3)
使用.NET任务,你可以做这样的事情。
1-首先解决并运行任务
private Task ExecuteTask(Result result)
{
return Task.Run(() =>
{
this.resultBody(result)
});
}
2-这样称呼它
await this.ExecuteTask(result);
//我这里没有VS,但我希望它能奏效,祝你好运!
答案 1 :(得分:0)
最后我发现了以下内容:
所以我找到了一个有效的解决方案。
public void NotifyEntityUpdated(int userId, int entityId)
{
Action currentAction = () =>
{
EntityUpdatedByUser(userId, entityId);
};
this.Dispatcher.Invoke(currentAction, DispatcherPriority.Send);
Action currentAction2 = () =>
{
SendEmail(userId, entityId);
};
this.Dispatcher.BeginInvoke(currentAction2, DispatcherPriority.Loaded);
}