如何在 .net 4 中异步执行操作
本文关键字:异步 执行 操作 net | 更新日期: 2023-09-27 18:36:22
我在WPF应用程序中得到了这段代码。
public void NotifyEntityUpdated(int userId, int entityId)
{
Action currentAction = () =>
{
EntityUpdatedByUser(userId, entityId);
SendEmail(userId, entityId);
};
this.Dispatcher.BeginInvoke(currentAction);
}
如何在 .net 4 中异步执行它?
如我所见,我不能像这样使用异步/等待...
public async Task<T> DoSomethingAsync<T>(Func<T, Task> resultBody) where T : Result, new()
{
T result = new T();
await resultBody(result);
return result;
}
有什么线索吗?
使用 .NET 任务,您可以执行类似操作。
1-首先解决并运行任务
private Task ExecuteTask(Result result)
{
return Task.Run(() =>
{
this.resultBody(result)
});
}
2-这样称呼它
await this.ExecuteTask(result);
我这里没有VS,但我希望它会起作用,祝你好运!
最后我找到了以下内容:
- 我得到的代码是正确的,并且可以 100% 异步工作。
- 我面临的问题发生是因为第二个方法SendEmail(userId,entityId);需要时间来执行,所以第一个方法的触发时间比应有的晚。
所以我找到了一个可行的解决方案。
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);
}