【发布时间】:2026-02-03 10:15:02
【问题描述】:
在下面的示例中,我在 Sync 方法 (UI) 中调用了 Async 方法。 在异步方法中,我调用了另一个异步方法(例如 api 调用),但我也调用了其他同步方法(例如更新组合框)。现在我对每个同步方法调用使用 Invoke((MethodInvoker...
private void control_SelectionValueChanged(Object sender, EventArgs e)
{
Task task = Task.Run(async () => await SomeMethodAsync());
}
private async Task SomeMethodAsync()
{
Invoke((MethodInvoker)(() => SomeMethodA))
bool variable = await SomeOtherMethodAsync()
if ( variable ) Invoke((MethodInvoker)(() => SomeMethodB))
Invoke((MethodInvoker)(() => SomeMethodC))
}
【问题讨论】:
-
在你的非异步方法中
Task task = SomeMethodAsync()不会更有意义。 MethodInvoker 代码的逻辑是什么? -
为什么更有意义? Invoke 调用的方法是属于 UI 线程的同步方法。 SomeOtherMethodAsync 是一个 api 调用(异步)。
-
那行对我来说毫无意义。您创建一个任务只是为了等待另一个任务。为什么不直接返回第一个任务(SomeMethodAsync 的结果)。
标签: c# asynchronous